2006-06-11 04:14:45 +02:00
|
|
|
# $NetBSD: bsd.pkg.mk,v 1.1850 2006/06/11 02:14:45 jlam Exp $
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
1998-06-05 14:45:53 +02:00
|
|
|
# This file is in the public domain.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
1998-06-05 14:45:53 +02:00
|
|
|
# This file is derived from bsd.port.mk - 940820 Jordan K. Hubbard.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
2005-02-11 16:55:13 +01:00
|
|
|
# Please see the pkgsrc/doc/guide manual for details on the
|
|
|
|
# variables used in this make file template.
|
|
|
|
#
|
1997-08-20 12:21:05 +02:00
|
|
|
# Default sequence for "all" is: fetch checksum extract patch configure build
|
|
|
|
#
|
|
|
|
# Please read the comments in the targets section below, you
|
|
|
|
# should be able to use the pre-* or post-* targets/scripts
|
|
|
|
# (which are available for every stage except checksum) or
|
|
|
|
# override the do-* targets to do pretty much anything you want.
|
|
|
|
|
2005-02-11 16:55:13 +01:00
|
|
|
############################################################################
|
|
|
|
# Include any preferences, if not already included, and common definitions
|
|
|
|
############################################################################
|
|
|
|
|
Implement some parts of proposals posted to tech-pkg:
- Define OS_VERSION in bsd.prefs.mk (...if not already defined). Previously
was only set in a conditional block in bsd.pkg.mk.
- Define new values, MACHINE_PLATFORM and MACHINE_GNU_PLATFORM, which
default to ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH} and
${LOWER_OPSYS}-${LOWER_VENDOR}-${LOWER_ARCH} respectively.
(Probably should nuke LOWER_ARCH and rename LOWER_VENDOR to something
like MACHINE_GNU_VENDOR.)
- Use ${MACHINE_GNU_PLATFORM} as the argument to `--host' in GNU_CONFIGURE
packages.
- Allow for ONLY_FOR_PLATFORM and NOT_FOR_PLATFORM, lists of patterns
in csh(1) glob style which are matched against MACHINE_PLATFORM above
and take the place of {ONLY,NOT}_FOR_{ARCHS,OPSYS}. (For now, until
all pkgs are converted, provide backwards compatibility.) *Both* may
be defined, in which case NOT_FOR_PLATFORM takes precedence.
- Also do some significant aesthetic cleanup, based on the idea
`define platform-specific overrides first, then define a generic case
with the ?= operator'. Lots more of this to do yet.
1999-05-24 20:42:00 +02:00
|
|
|
.include "../../mk/bsd.prefs.mk"
|
2006-06-06 17:28:51 +02:00
|
|
|
|
|
|
|
.include "${PKGSRCDIR}/mk/flavor/bsd.flavor-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/check/bsd.check-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/depends/bsd.depends-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/fetch/bsd.fetch-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/extract/bsd.extract-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/patch/bsd.patch-vars.mk"
|
|
|
|
.include "${PKGSRCDIR}/mk/install/bsd.install-vars.mk"
|
2006-06-09 15:59:06 +02:00
|
|
|
.include "${PKGSRCDIR}/mk/bsd.pkg.error.mk"
|
2006-06-06 17:28:51 +02:00
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
.include "../../mk/bsd.hacks.mk"
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
|
2003-07-28 20:15:56 +02:00
|
|
|
# This has to come first to avoid showing all BUILD_DEFS added by this
|
|
|
|
# Makefile, which are usually not customizable.
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
.PHONY: build-defs-message
|
|
|
|
pre-depends-hook: build-defs-message
|
2004-08-05 01:29:50 +02:00
|
|
|
.if empty(PKGSRC_SHOW_BUILD_DEFS:M[yY][eE][sS])
|
2003-08-08 10:43:37 +02:00
|
|
|
build-defs-message:
|
|
|
|
.elif !target(build-defs-message)
|
2003-07-30 17:04:21 +02:00
|
|
|
build-defs-message: ${WRKDIR}
|
2003-08-08 10:43:37 +02:00
|
|
|
. if defined(BUILD_DEFS) && !empty(BUILD_DEFS)
|
|
|
|
. if !exists(${WRKDIR}/.bdm_done)
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} "=========================================================================="
|
|
|
|
@${ECHO} "The following variables will affect the build process of this package,"
|
|
|
|
@${ECHO} "${PKGNAME}. Their current value is shown below:"
|
|
|
|
@${ECHO} ""
|
2003-08-08 10:43:37 +02:00
|
|
|
. for var in ${BUILD_DEFS:O}
|
|
|
|
. if !defined(${var})
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} " * ${var} (not defined)"
|
2003-08-08 10:43:37 +02:00
|
|
|
. elif defined(${var}) && empty(${var})
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} " * ${var} (defined)"
|
2003-08-08 10:43:37 +02:00
|
|
|
. else
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} " * ${var} = ${${var}}"
|
2003-08-08 10:43:37 +02:00
|
|
|
. endif
|
|
|
|
. endfor
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} ""
|
2004-03-27 09:06:24 +01:00
|
|
|
@${ECHO} "You may want to abort the process now with CTRL-C and change their value"
|
|
|
|
@${ECHO} "before continuing. Be sure to run \`${MAKE} clean' after"
|
|
|
|
@${ECHO} "the changes."
|
2003-07-28 20:15:56 +02:00
|
|
|
@${ECHO} "=========================================================================="
|
2003-07-30 17:04:21 +02:00
|
|
|
@${TOUCH} ${WRKDIR}/.bdm_done
|
2003-08-08 10:43:37 +02:00
|
|
|
. endif
|
|
|
|
. endif
|
2003-07-28 20:15:56 +02:00
|
|
|
.endif
|
|
|
|
|
2005-02-11 16:55:13 +01:00
|
|
|
############################################################################
|
2005-01-24 20:57:42 +01:00
|
|
|
# Transform package Makefile variables and set defaults
|
2005-02-11 16:55:13 +01:00
|
|
|
############################################################################
|
2003-10-02 16:41:42 +02:00
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
MKCRYPTO?= YES # build crypto packages by default
|
|
|
|
|
|
|
|
##### Variant spellings
|
|
|
|
|
|
|
|
.if defined(LICENCE) && !defined(LICENSE)
|
|
|
|
LICENSE= ${LICENCE}
|
|
|
|
.endif
|
|
|
|
.if defined(ACCEPTABLE_LICENCES) && !defined(ACCEPTABLE_LICENSES)
|
|
|
|
ACCEPTABLE_LICENSES= ${ACCEPTABLE_LICENCES}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
##### PKGBASE, PKGNAME[_NOREV], PKGVERSION
|
Implement some parts of proposals posted to tech-pkg:
- Define OS_VERSION in bsd.prefs.mk (...if not already defined). Previously
was only set in a conditional block in bsd.pkg.mk.
- Define new values, MACHINE_PLATFORM and MACHINE_GNU_PLATFORM, which
default to ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH} and
${LOWER_OPSYS}-${LOWER_VENDOR}-${LOWER_ARCH} respectively.
(Probably should nuke LOWER_ARCH and rename LOWER_VENDOR to something
like MACHINE_GNU_VENDOR.)
- Use ${MACHINE_GNU_PLATFORM} as the argument to `--host' in GNU_CONFIGURE
packages.
- Allow for ONLY_FOR_PLATFORM and NOT_FOR_PLATFORM, lists of patterns
in csh(1) glob style which are matched against MACHINE_PLATFORM above
and take the place of {ONLY,NOT}_FOR_{ARCHS,OPSYS}. (For now, until
all pkgs are converted, provide backwards compatibility.) *Both* may
be defined, in which case NOT_FOR_PLATFORM takes precedence.
- Also do some significant aesthetic cleanup, based on the idea
`define platform-specific overrides first, then define a generic case
with the ?= operator'. Lots more of this to do yet.
1999-05-24 20:42:00 +02:00
|
|
|
|
2000-06-03 21:03:20 +02:00
|
|
|
PKGBASE?= ${PKGNAME:C/-[^-]*$//}
|
|
|
|
PKGVERSION?= ${PKGNAME:C/^.*-//}
|
2004-09-15 17:26:10 +02:00
|
|
|
.if defined(PKGREVISION) && !empty(PKGREVISION) && (${PKGREVISION} != "0")
|
|
|
|
. if defined(PKGNAME)
|
|
|
|
PKGNAME_NOREV:= ${PKGNAME}
|
|
|
|
PKGNAME:= ${PKGNAME}nb${PKGREVISION}
|
|
|
|
. else
|
|
|
|
PKGNAME?= ${DISTNAME}nb${PKGREVISION}
|
|
|
|
PKGNAME_NOREV= ${DISTNAME}
|
|
|
|
. endif
|
|
|
|
.else
|
|
|
|
PKGNAME?= ${DISTNAME}
|
|
|
|
PKGNAME_NOREV= ${PKGNAME}
|
|
|
|
.endif
|
2000-06-03 20:51:34 +02:00
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
##### Others
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2005-02-11 16:55:13 +01:00
|
|
|
BUILD_DEPENDS?= # empty
|
2005-01-24 20:57:42 +01:00
|
|
|
BUILD_TARGET?= all
|
2005-02-11 16:55:13 +01:00
|
|
|
COMMENT?= (no description)
|
2005-01-24 20:57:42 +01:00
|
|
|
CONFIGURE_DIRS?= ${WRKSRC}
|
|
|
|
CONFIGURE_SCRIPT?= ./configure
|
2005-02-11 16:55:13 +01:00
|
|
|
DEPENDS?= # empty
|
2005-01-24 20:57:42 +01:00
|
|
|
DESCR_SRC?= ${PKGDIR}/DESCR
|
2005-02-22 22:01:10 +01:00
|
|
|
DIGEST_ALGORITHMS?= SHA1 RMD160
|
2005-01-24 20:57:42 +01:00
|
|
|
DISTINFO_FILE?= ${PKGDIR}/distinfo
|
2002-07-02 13:26:05 +02:00
|
|
|
INTERACTIVE_STAGE?= none
|
2006-03-04 22:28:51 +01:00
|
|
|
MAINTAINER?= pkgsrc-users@NetBSD.org
|
2005-01-24 20:57:42 +01:00
|
|
|
MAKE_FLAGS?= # empty
|
|
|
|
MAKEFILE?= Makefile
|
2005-02-22 22:01:10 +01:00
|
|
|
PATCH_DIGEST_ALGORITHM?=SHA1
|
2005-01-24 20:57:42 +01:00
|
|
|
PKGWILDCARD?= ${PKGBASE}-[0-9]*
|
|
|
|
SVR4_PKGNAME?= ${PKGNAME}
|
|
|
|
USE_DIGEST?= YES
|
|
|
|
WRKSRC?= ${WRKDIR}/${DISTNAME}
|
|
|
|
|
2005-03-18 19:16:34 +01:00
|
|
|
.if (defined(INSTALL_UNSTRIPPED) && !empty(INSTALL_UNSTRIPPED:M[yY][eE][sS])) || defined(DEBUG_FLAGS)
|
|
|
|
_INSTALL_UNSTRIPPED= # set (flag used by platform/*.mk)
|
|
|
|
.endif
|
|
|
|
|
2005-02-11 16:55:13 +01:00
|
|
|
##### Non-overridable constants
|
|
|
|
|
|
|
|
# Latest versions of tools required for correct pkgsrc operation.
|
|
|
|
DIGEST_REQD= 20010302
|
2005-11-05 14:31:43 +01:00
|
|
|
PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD:U20051103}
|
2005-02-11 16:55:13 +01:00
|
|
|
|
|
|
|
##### Transform USE_* into dependencies
|
|
|
|
|
|
|
|
.include "../../mk/bsd.pkg.use.mk"
|
|
|
|
|
2005-02-11 17:57:45 +01:00
|
|
|
############################################################################
|
|
|
|
# Sanity checks
|
|
|
|
############################################################################
|
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
# Fail-safe in the case of circular dependencies
|
|
|
|
.if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME})
|
2005-02-11 18:00:07 +01:00
|
|
|
PKG_FAIL_REASON+= "Circular dependency detected"
|
2005-01-24 20:57:42 +01:00
|
|
|
.endif
|
|
|
|
|
2005-02-11 17:57:45 +01:00
|
|
|
# PKG_INSTALLATION_TYPE can only be one of two values: "pkgviews" or
|
|
|
|
# "overwrite".
|
|
|
|
.if (${PKG_INSTALLATION_TYPE} != "pkgviews") && \
|
|
|
|
(${PKG_INSTALLATION_TYPE} != "overwrite")
|
|
|
|
PKG_FAIL_REASON+= "PKG_INSTALLATION_TYPE must be \`\`pkgviews'' or \`\`overwrite''."
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if empty(PKG_INSTALLATION_TYPES:M${PKG_INSTALLATION_TYPE})
|
|
|
|
PKG_FAIL_REASON+= "This package doesn't support PKG_INSTALLATION_TYPE=${PKG_INSTALLATION_TYPE}."
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Check that we are using up-to-date pkg_* tools with this file.
|
|
|
|
.if !defined(NO_PKGTOOLS_REQD_CHECK)
|
|
|
|
. if ${PKGTOOLS_VERSION} < ${PKGTOOLS_REQD}
|
|
|
|
PKG_FAIL_REASON+='Error: The package tools installed on this system are out of date.'
|
|
|
|
PKG_FAIL_REASON+='The installed package tools are dated ${PKGTOOLS_VERSION:C|(....)(..)(..)|\1/\2/\3|} and you must update'
|
|
|
|
PKG_FAIL_REASON+='them to at least ${PKGTOOLS_REQD:C|(....)(..)(..)|\1/\2/\3|} using the following command:'
|
|
|
|
PKG_FAIL_REASON+=''
|
2005-11-20 09:07:30 +01:00
|
|
|
PKG_FAIL_REASON+=' (cd ${PKGSRCDIR}/pkgtools/pkg_install && ${MAKE} clean && ${MAKE} update)'
|
2005-02-11 17:57:45 +01:00
|
|
|
. endif
|
|
|
|
.endif # !NO_PKGTOOLS_REQD_CHECK
|
|
|
|
|
|
|
|
.if defined(ALL_TARGET)
|
|
|
|
PKG_FAIL_REASON+='ALL_TARGET is deprecated and must be replaced with BUILD_TARGET.'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(NO_WRKSUBDIR)
|
|
|
|
PKG_FAIL_REASON+='NO_WRKSUBDIR has been deprecated - please replace it with an explicit'
|
|
|
|
PKG_FAIL_REASON+='assignment of WRKSRC= $${WRKDIR}'
|
|
|
|
.endif # NO_WRKSUBDIR
|
|
|
|
|
|
|
|
# We need to make sure the buildlink-x11 package is not installed since it
|
|
|
|
# breaks builds that use imake.
|
|
|
|
.if defined(USE_IMAKE)
|
|
|
|
. if exists(${LOCALBASE}/lib/X11/config/buildlinkX11.def) || \
|
|
|
|
exists(${X11BASE}/lib/X11/config/buildlinkX11.def)
|
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} uses imake, but the buildlink-x11 package was found." \
|
|
|
|
" Please deinstall it (pkg_delete buildlink-x11)."
|
|
|
|
. endif
|
|
|
|
.endif # USE_IMAKE
|
|
|
|
|
|
|
|
.if !defined(CATEGORIES) || !defined(DISTNAME)
|
|
|
|
PKG_FAIL_REASON+='CATEGORIES and DISTNAME are mandatory.'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(LIB_DEPENDS)
|
|
|
|
PKG_FAIL_REASON+='LIB_DEPENDS is deprecated and must be replaced with DEPENDS.'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(PKG_PATH)
|
|
|
|
PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(MASTER_SITE_SUBDIR)
|
|
|
|
PKG_FAIL_REASON+='MASTER_SITE_SUBDIR is deprecated and must be replaced with MASTER_SITES.'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(PATCH_SITE_SUBDIR)
|
|
|
|
PKG_FAIL_REASON+='PATCH_SITE_SUBDIR is deprecated and must be replaced with PATCH_SITES.'
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(ONLY_FOR_ARCHS) || defined(NOT_FOR_ARCHS) \
|
|
|
|
|| defined(ONLY_FOR_OPSYS) || defined(NOT_FOR_OPSYS)
|
|
|
|
PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPSYS are deprecated and must be replaced with ONLY/NOT_FOR_PLATFORM.'
|
|
|
|
.endif
|
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
# Allow variables to be set on a per-OS basis
|
|
|
|
OPSYSVARS+= CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS
|
|
|
|
.for _var_ in ${OPSYSVARS:O}
|
|
|
|
. if defined(${_var_}.${OPSYS})
|
|
|
|
${_var_}+= ${${_var_}.${OPSYS}}
|
|
|
|
. elif defined(${_var_}.*)
|
|
|
|
${_var_}+= ${${_var_}.*}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
2005-02-11 17:36:49 +01:00
|
|
|
CPPFLAGS+= ${CPP_PRECOMP_FLAGS}
|
2005-11-14 05:41:17 +01:00
|
|
|
|
2005-02-11 17:36:49 +01:00
|
|
|
ALL_ENV+= CC=${CC:Q}
|
2005-05-10 03:34:04 +02:00
|
|
|
ALL_ENV+= CFLAGS=${CFLAGS:M*:Q}
|
|
|
|
ALL_ENV+= CPPFLAGS=${CPPFLAGS:M*:Q}
|
|
|
|
ALL_ENV+= CXX=${CXX:M*:Q}
|
|
|
|
ALL_ENV+= CXXFLAGS=${CXXFLAGS:M*:Q}
|
2005-02-11 17:36:49 +01:00
|
|
|
ALL_ENV+= COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q}
|
2005-03-16 03:09:54 +01:00
|
|
|
ALL_ENV+= F77=${FC:Q}
|
2005-02-11 17:36:49 +01:00
|
|
|
ALL_ENV+= FC=${FC:Q}
|
2005-05-10 03:34:04 +02:00
|
|
|
ALL_ENV+= FFLAGS=${FFLAGS:M*:Q}
|
2005-03-20 19:18:09 +01:00
|
|
|
ALL_ENV+= LANG=C
|
|
|
|
ALL_ENV+= LC_COLLATE=C
|
|
|
|
ALL_ENV+= LC_CTYPE=C
|
|
|
|
ALL_ENV+= LC_MESSAGES=C
|
|
|
|
ALL_ENV+= LC_MONETARY=C
|
|
|
|
ALL_ENV+= LC_NUMERIC=C
|
|
|
|
ALL_ENV+= LC_TIME=C
|
2005-05-10 03:34:04 +02:00
|
|
|
ALL_ENV+= LDFLAGS=${LDFLAGS:M*:Q}
|
2005-02-11 17:36:49 +01:00
|
|
|
ALL_ENV+= LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q}
|
|
|
|
ALL_ENV+= PATH=${PATH:Q}:${LOCALBASE}/bin:${X11BASE}/bin
|
|
|
|
ALL_ENV+= PREFIX=${PREFIX}
|
|
|
|
|
|
|
|
MAKE_ENV+= ${ALL_ENV}
|
|
|
|
MAKE_ENV+= ${NO_EXPORT_CPP:D:UCPP=${CPP:Q}}
|
|
|
|
MAKE_ENV+= LINK_ALL_LIBGCC_HACK=${LINK_ALL_LIBGCC_HACK:Q}
|
2005-12-05 23:07:07 +01:00
|
|
|
MAKE_ENV+= LOCALBASE=${LOCALBASE:Q}
|
2005-02-11 17:36:49 +01:00
|
|
|
MAKE_ENV+= NO_WHOLE_ARCHIVE_FLAG=${NO_WHOLE_ARCHIVE_FLAG:Q}
|
|
|
|
MAKE_ENV+= WHOLE_ARCHIVE_FLAG=${WHOLE_ARCHIVE_FLAG:Q}
|
2005-12-05 23:07:07 +01:00
|
|
|
MAKE_ENV+= X11BASE=${X11BASE:Q}
|
|
|
|
MAKE_ENV+= X11PREFIX=${X11PREFIX:Q}
|
|
|
|
MAKE_ENV+= PKGMANDIR=${PKGMANDIR:Q}
|
2005-02-11 17:36:49 +01:00
|
|
|
|
|
|
|
# Constants to provide a consistent environment for packages using
|
|
|
|
# BSD-style Makefiles.
|
|
|
|
MAKE_ENV+= MAKECONF=${PKGMAKECONF:U/dev/null}
|
|
|
|
MAKE_ENV+= OBJECT_FMT=${OBJECT_FMT:Q}
|
|
|
|
MAKE_ENV+= ${USETOOLS:DUSETOOLS=${USETOOLS:Q}}
|
|
|
|
|
|
|
|
SCRIPTS_ENV+= ${ALL_ENV}
|
|
|
|
SCRIPTS_ENV+= _PKGSRCDIR=${_PKGSRCDIR}
|
|
|
|
SCRIPTS_ENV+= ${BATCH:DBATCH=yes}
|
|
|
|
SCRIPTS_ENV+= CURDIR=${.CURDIR}
|
|
|
|
SCRIPTS_ENV+= DEPENDS=${DEPENDS:Q}
|
|
|
|
SCRIPTS_ENV+= DISTDIR=${DISTDIR}
|
|
|
|
SCRIPTS_ENV+= FILESDIR=${FILESDIR}
|
|
|
|
SCRIPTS_ENV+= LOCALBASE=${LOCALBASE}
|
|
|
|
SCRIPTS_ENV+= PATCHDIR=${PATCHDIR}
|
|
|
|
SCRIPTS_ENV+= PKGSRCDIR=${PKGSRCDIR}
|
|
|
|
SCRIPTS_ENV+= SCRIPTDIR=${SCRIPTDIR}
|
|
|
|
SCRIPTS_ENV+= VIEWBASE=${VIEWBASE}
|
|
|
|
SCRIPTS_ENV+= WRKDIR=${WRKDIR}
|
|
|
|
SCRIPTS_ENV+= WRKSRC=${WRKSRC}
|
|
|
|
SCRIPTS_ENV+= X11BASE=${X11BASE}
|
|
|
|
|
|
|
|
CONFIGURE_ENV+= ${ALL_ENV}
|
|
|
|
|
2005-01-24 20:57:42 +01:00
|
|
|
# Store the result in the +BUILD_INFO file so we can query for the build
|
|
|
|
# options using "pkg_info -Q PKG_OPTIONS <pkg>".
|
|
|
|
#
|
|
|
|
.if defined(PKG_SUPPORTED_OPTIONS) && defined(PKG_OPTIONS)
|
|
|
|
BUILD_DEFS+= PKG_OPTIONS
|
|
|
|
.endif
|
2002-07-02 13:26:05 +02:00
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
.if empty(DEPOT_SUBDIR)
|
|
|
|
PKG_FAIL_REASON+= "DEPOT_SUBDIR may not be empty."
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
1998-07-31 16:55:38 +02:00
|
|
|
|
2006-06-07 20:37:06 +02:00
|
|
|
# ZERO_FILESIZE_P exits with a successful return code if the given file
|
|
|
|
# has zero length.
|
|
|
|
# NONZERO_FILESIZE_P exits with a successful return code if the given file
|
|
|
|
# has nonzero length.
|
2006-06-07 19:44:29 +02:00
|
|
|
#
|
2006-06-07 20:37:06 +02:00
|
|
|
_ZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 1 : 0; }'
|
|
|
|
_NONZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 0 : 1; }'
|
2006-06-07 19:44:29 +02:00
|
|
|
|
2002-01-04 13:00:56 +01:00
|
|
|
# Automatically increase process limit where necessary for building.
|
2005-11-18 18:07:13 +01:00
|
|
|
_ULIMIT_CMD= ${UNLIMIT_RESOURCES:@_lim_@${ULIMIT_CMD_${_lim_}};@}
|
2002-01-04 13:00:56 +01:00
|
|
|
|
2001-06-12 22:30:09 +02:00
|
|
|
# If GNU_CONFIGURE is defined, then pass LIBS to the GNU configure script.
|
2002-04-07 19:09:57 +02:00
|
|
|
# also pass in a CONFIG_SHELL to avoid picking up bash
|
2001-06-12 22:30:09 +02:00
|
|
|
.if defined(GNU_CONFIGURE)
|
2002-04-07 19:09:57 +02:00
|
|
|
CONFIG_SHELL?= ${SH}
|
2005-12-05 23:07:07 +01:00
|
|
|
CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL:Q}
|
2005-05-10 03:34:04 +02:00
|
|
|
CONFIGURE_ENV+= LIBS=${LIBS:M*:Q}
|
2004-04-23 04:03:18 +02:00
|
|
|
CONFIGURE_ENV+= install_sh=${INSTALL:Q}
|
2005-11-09 19:42:32 +01:00
|
|
|
. if (defined(USE_LIBTOOL) || !empty(PKGDIR:M*/libtool-base)) && defined(_OPSYS_MAX_CMDLEN_CMD)
|
2005-01-25 19:15:58 +01:00
|
|
|
CONFIGURE_ENV+= lt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN_CMD:sh}
|
2004-11-16 19:04:00 +01:00
|
|
|
. endif
|
2001-06-12 22:30:09 +02:00
|
|
|
.endif
|
|
|
|
|
2005-06-04 22:56:47 +02:00
|
|
|
_WRAPPER_COOKIE= ${WRKDIR}/.wrapper_done
|
|
|
|
_CONFIGURE_COOKIE= ${WRKDIR}/.configure_done
|
|
|
|
_BUILD_COOKIE= ${WRKDIR}/.build_done
|
|
|
|
_TEST_COOKIE= ${WRKDIR}/.test_done
|
2006-06-09 15:59:06 +02:00
|
|
|
_INTERACTIVE_COOKIE= ${.CURDIR}/.interactive_stage
|
2005-06-04 22:56:47 +02:00
|
|
|
_NULL_COOKIE= ${WRKDIR}/.null
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
# Miscellaneous overridable commands:
|
1999-11-29 20:48:15 +01:00
|
|
|
SHCOMMENT?= ${ECHO_MSG} >/dev/null '***'
|
2001-03-06 15:50:45 +01:00
|
|
|
|
2004-11-12 21:25:41 +01:00
|
|
|
LIBABISUFFIX?=
|
|
|
|
|
Implement some parts of proposals posted to tech-pkg:
- Define OS_VERSION in bsd.prefs.mk (...if not already defined). Previously
was only set in a conditional block in bsd.pkg.mk.
- Define new values, MACHINE_PLATFORM and MACHINE_GNU_PLATFORM, which
default to ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH} and
${LOWER_OPSYS}-${LOWER_VENDOR}-${LOWER_ARCH} respectively.
(Probably should nuke LOWER_ARCH and rename LOWER_VENDOR to something
like MACHINE_GNU_VENDOR.)
- Use ${MACHINE_GNU_PLATFORM} as the argument to `--host' in GNU_CONFIGURE
packages.
- Allow for ONLY_FOR_PLATFORM and NOT_FOR_PLATFORM, lists of patterns
in csh(1) glob style which are matched against MACHINE_PLATFORM above
and take the place of {ONLY,NOT}_FOR_{ARCHS,OPSYS}. (For now, until
all pkgs are converted, provide backwards compatibility.) *Both* may
be defined, in which case NOT_FOR_PLATFORM takes precedence.
- Also do some significant aesthetic cleanup, based on the idea
`define platform-specific overrides first, then define a generic case
with the ?= operator'. Lots more of this to do yet.
1999-05-24 20:42:00 +02:00
|
|
|
TOUCH_FLAGS?= -f
|
1997-08-20 12:21:05 +02:00
|
|
|
|
1999-03-08 18:26:54 +01:00
|
|
|
# Debugging levels for this file, dependent on PKG_DEBUG_LEVEL definition
|
|
|
|
# 0 == normal, default, quiet operation
|
|
|
|
# 1 == all shell commands echoed before invocation
|
|
|
|
# 2 == shell "set -x" operation
|
|
|
|
PKG_DEBUG_LEVEL?= 0
|
|
|
|
_PKG_SILENT= @
|
2002-09-26 23:04:11 +02:00
|
|
|
_PKG_DEBUG= # empty
|
|
|
|
_PKG_DEBUG_SCRIPT= # empty
|
1999-03-08 18:26:54 +01:00
|
|
|
|
|
|
|
.if ${PKG_DEBUG_LEVEL} > 0
|
2002-09-26 23:04:11 +02:00
|
|
|
_PKG_SILENT= # empty
|
1999-03-08 18:26:54 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if ${PKG_DEBUG_LEVEL} > 1
|
|
|
|
_PKG_DEBUG= set -x;
|
2002-09-26 23:04:11 +02:00
|
|
|
_PKG_DEBUG_SCRIPT= ${SH} -x
|
1997-09-28 02:44:15 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# A few aliases for *-install targets
|
2005-07-17 06:17:09 +02:00
|
|
|
INSTALL= ${TOOLS_INSTALL} # XXX override sys.mk
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_PROGRAM?= \
|
2002-05-29 16:52:14 +02:00
|
|
|
${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_GAME?= \
|
|
|
|
${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE}
|
|
|
|
INSTALL_SCRIPT?= \
|
1997-08-20 12:21:05 +02:00
|
|
|
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_LIB?= \
|
2004-04-28 00:35:47 +02:00
|
|
|
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_DATA?= \
|
1997-08-20 12:21:05 +02:00
|
|
|
${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE}
|
2004-08-04 04:56:01 +02:00
|
|
|
INSTALL_GAME_DATA?= \
|
|
|
|
${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDATAMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_MAN?= \
|
1997-08-20 12:21:05 +02:00
|
|
|
${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_PROGRAM_DIR?= \
|
2003-07-12 12:21:33 +02:00
|
|
|
${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${PKGDIRMODE}
|
2006-04-12 23:01:15 +02:00
|
|
|
INSTALL_GAME_DIR?= \
|
|
|
|
${INSTALL} -d -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDIRMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_SCRIPT_DIR?= \
|
1998-03-07 22:19:00 +01:00
|
|
|
${INSTALL_PROGRAM_DIR}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_LIB_DIR?= \
|
2004-04-28 00:35:47 +02:00
|
|
|
${INSTALL_PROGRAM_DIR}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_DATA_DIR?= \
|
2003-07-12 12:21:33 +02:00
|
|
|
${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${PKGDIRMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_MAN_DIR?= \
|
2003-07-12 12:21:33 +02:00
|
|
|
${INSTALL} -d -o ${MANOWN} -g ${MANGRP} -m ${PKGDIRMODE}
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2005-05-22 17:31:03 +02:00
|
|
|
INSTALL_MACROS= BSD_INSTALL_PROGRAM=${INSTALL_PROGRAM:Q} \
|
|
|
|
BSD_INSTALL_SCRIPT=${INSTALL_SCRIPT:Q} \
|
|
|
|
BSD_INSTALL_LIB=${INSTALL_LIB:Q} \
|
|
|
|
BSD_INSTALL_DATA=${INSTALL_DATA:Q} \
|
|
|
|
BSD_INSTALL_MAN=${INSTALL_MAN:Q} \
|
|
|
|
BSD_INSTALL=${INSTALL:Q} \
|
|
|
|
BSD_INSTALL_PROGRAM_DIR=${INSTALL_PROGRAM_DIR:Q} \
|
|
|
|
BSD_INSTALL_SCRIPT_DIR=${INSTALL_SCRIPT_DIR:Q} \
|
|
|
|
BSD_INSTALL_LIB_DIR=${INSTALL_LIB_DIR:Q} \
|
|
|
|
BSD_INSTALL_DATA_DIR=${INSTALL_DATA_DIR:Q} \
|
|
|
|
BSD_INSTALL_MAN_DIR=${INSTALL_MAN_DIR:Q} \
|
|
|
|
BSD_INSTALL_GAME=${INSTALL_GAME:Q} \
|
2006-04-12 23:01:15 +02:00
|
|
|
BSD_INSTALL_GAME_DATA=${INSTALL_GAME_DATA:Q} \
|
|
|
|
BSD_INSTALL_GAME_DIR=${INSTALL_GAME_DIR:Q}
|
1997-08-20 12:21:05 +02:00
|
|
|
MAKE_ENV+= ${INSTALL_MACROS}
|
|
|
|
SCRIPTS_ENV+= ${INSTALL_MACROS}
|
|
|
|
|
2006-03-15 17:20:11 +01:00
|
|
|
# If pkgsrc is supposed to ensure that tests are run before installation
|
|
|
|
# of the package, then the build targets should be "build test", otherwise
|
|
|
|
# just "build" suffices.
|
|
|
|
#
|
|
|
|
.if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
|
|
|
|
_PKGSRC_BUILD_TARGETS= build test
|
|
|
|
.else
|
|
|
|
_PKGSRC_BUILD_TARGETS= build
|
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# The user can override the NO_PACKAGE by specifying this from
|
|
|
|
# the make command line
|
|
|
|
.if defined(FORCE_PACKAGE)
|
2001-07-19 00:43:32 +02:00
|
|
|
. undef NO_PACKAGE
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2005-01-25 14:13:35 +01:00
|
|
|
# Handle alternatives
|
|
|
|
#
|
|
|
|
.include "../../mk/alternatives.mk"
|
|
|
|
|
2006-03-14 02:14:26 +01:00
|
|
|
# INSTALL/DEINSTALL script framework
|
2006-05-22 01:50:15 +02:00
|
|
|
.include "../../mk/pkginstall/bsd.pkginstall.mk"
|
2003-01-29 20:34:14 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: uptodate-digest
|
2001-03-06 15:50:45 +01:00
|
|
|
uptodate-digest:
|
2004-03-13 21:58:06 +01:00
|
|
|
.if !empty(USE_DIGEST:M[yY][eE][sS])
|
2001-03-06 15:50:45 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-06-17 16:33:17 +02:00
|
|
|
if [ -f ${DISTINFO_FILE} -a \( ! -f ${DIGEST} -o ${DIGEST_VERSION} -lt ${DIGEST_REQD} \) ]; then \
|
2004-10-07 04:01:37 +02:00
|
|
|
{ cd ${PKGSRCDIR}/pkgtools/digest; \
|
2003-06-17 16:33:17 +02:00
|
|
|
${MAKE} clean; \
|
|
|
|
if [ -f ${DIGEST} ]; then \
|
|
|
|
${MAKE} ${MAKEFLAGS} deinstall; \
|
|
|
|
fi; \
|
2004-03-22 05:07:15 +01:00
|
|
|
${MAKE} ${MAKEFLAGS} ${_PKGSRC_BUILD_TARGETS}; \
|
|
|
|
if [ -f ${DIGEST} ]; then \
|
|
|
|
${MAKE} ${MAKEFLAGS} deinstall; \
|
|
|
|
fi; \
|
2003-06-17 16:33:17 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} ${DEPENDS_TARGET}; \
|
|
|
|
${MAKE} ${MAKEFLAGS} clean; } \
|
2001-03-06 15:50:45 +01:00
|
|
|
fi
|
2004-03-13 21:54:16 +01:00
|
|
|
.else
|
|
|
|
@${DO_NADA}
|
|
|
|
.endif
|
2001-03-06 15:50:45 +01:00
|
|
|
|
2000-03-13 15:24:27 +01:00
|
|
|
# Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree
|
2001-01-31 00:18:36 +01:00
|
|
|
# of dependencies for building, and the current target.
|
2005-11-18 15:40:21 +01:00
|
|
|
_PKGSRC_IN?= ===${SMART_MESSAGES:D> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===}
|
2000-03-13 15:19:15 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Used to print all the '===>' style prompts - override this to turn them off.
|
|
|
|
ECHO_MSG?= ${ECHO}
|
2006-03-12 15:55:18 +01:00
|
|
|
PHASE_MSG?= ${ECHO_MSG} ${_PKGSRC_IN:Q}\>
|
|
|
|
STEP_MSG?= ${ECHO_MSG} "=>"
|
|
|
|
WARNING_MSG?= ${ECHO_MSG} 1>&2 "WARNING:"
|
|
|
|
ERROR_MSG?= ${ECHO_MSG} 1>&2 "ERROR:"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2006-06-07 19:00:03 +02:00
|
|
|
WARNING_CAT?= ${SED} -e "s|^|WARNING: |" 1>&2
|
|
|
|
ERROR_CAT?= ${SED} -e "s|^|ERROR: |" 1>&2
|
|
|
|
|
1998-02-02 09:10:41 +01:00
|
|
|
# How to do nothing. Override if you, for some strange reason, would rather
|
|
|
|
# do something.
|
|
|
|
DO_NADA?= ${TRUE}
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(GNU_CONFIGURE)
|
2005-10-31 10:42:19 +01:00
|
|
|
HAS_CONFIGURE= yes
|
|
|
|
|
2002-06-23 05:15:28 +02:00
|
|
|
GNU_CONFIGURE_PREFIX?= ${PREFIX}
|
2005-12-05 23:07:07 +01:00
|
|
|
CONFIGURE_ARGS+= --prefix=${GNU_CONFIGURE_PREFIX:Q}
|
2005-10-31 10:42:19 +01:00
|
|
|
|
2005-04-16 11:20:18 +02:00
|
|
|
USE_GNU_CONFIGURE_HOST?= yes
|
|
|
|
. if !empty(USE_GNU_CONFIGURE_HOST:M[yY][eE][sS])
|
2005-12-05 23:07:07 +01:00
|
|
|
CONFIGURE_ARGS+= --host=${MACHINE_GNU_PLATFORM:Q}
|
2005-04-16 11:20:18 +02:00
|
|
|
. endif
|
2005-10-31 10:42:19 +01:00
|
|
|
|
2006-03-20 02:48:57 +01:00
|
|
|
# Support for alternative info directories in packages is very sketchy.
|
|
|
|
# For now, if we configure a package to install entirely into a
|
|
|
|
# subdirectory of ${PREFIX}, then root the info directory directly under
|
|
|
|
# that subdirectory.
|
|
|
|
#
|
2004-05-08 18:14:55 +02:00
|
|
|
CONFIGURE_HAS_INFODIR?= yes
|
2006-03-20 02:48:57 +01:00
|
|
|
.if ${GNU_CONFIGURE_PREFIX} == ${PREFIX}
|
|
|
|
GNU_CONFIGURE_INFODIR?= ${GNU_CONFIGURE_PREFIX}/${PKGINFODIR}
|
|
|
|
.else
|
|
|
|
GNU_CONFIGURE_INFODIR?= ${GNU_CONFIGURE_PREFIX}/info
|
|
|
|
.endif
|
|
|
|
. if defined(INFO_FILES) && !empty(CONFIGURE_HAS_INFODIR:M[yY][eE][sS])
|
2006-03-02 20:15:37 +01:00
|
|
|
CONFIGURE_ARGS+= --infodir=${GNU_CONFIGURE_INFODIR:Q}
|
2004-05-08 04:13:00 +02:00
|
|
|
. endif
|
2005-10-31 10:42:19 +01:00
|
|
|
|
2005-10-04 19:27:00 +02:00
|
|
|
CONFIGURE_HAS_MANDIR?= yes
|
2006-03-02 20:15:37 +01:00
|
|
|
GNU_CONFIGURE_MANDIR?= ${GNU_CONFIGURE_PREFIX}/${PKGMANDIR}
|
2005-10-04 19:27:00 +02:00
|
|
|
. if !empty(CONFIGURE_HAS_MANDIR:M[yY][eE][sS])
|
2005-10-31 10:42:19 +01:00
|
|
|
CONFIGURE_ARGS+= --mandir=${GNU_CONFIGURE_MANDIR:Q}
|
2005-10-04 19:27:00 +02:00
|
|
|
. endif
|
2004-02-14 01:40:55 +01:00
|
|
|
#
|
|
|
|
# By default, override config.guess and config.sub for GNU configure
|
|
|
|
# packages. pkgsrc's updated versions of these scripts allows GNU
|
|
|
|
# configure to recognise NetBSD ports such as shark.
|
|
|
|
#
|
2004-02-14 16:22:42 +01:00
|
|
|
CONFIG_GUESS_OVERRIDE?= \
|
|
|
|
config.guess */config.guess */*/config.guess
|
|
|
|
CONFIG_SUB_OVERRIDE?= \
|
|
|
|
config.sub */config.sub */*/config.sub
|
2005-01-14 01:10:01 +01:00
|
|
|
CONFIG_RPATH_OVERRIDE?= # set by platform file as needed
|
2004-02-14 14:54:28 +01:00
|
|
|
#
|
2006-01-03 01:41:51 +01:00
|
|
|
# By default, override GNU configure scripts so that the generated
|
|
|
|
# config.status scripts never do anything on "recheck".
|
2004-02-14 14:54:28 +01:00
|
|
|
#
|
2006-01-03 01:41:51 +01:00
|
|
|
CONFIGURE_SCRIPTS_OVERRIDE?= \
|
|
|
|
configure */configure */*/configure
|
2001-07-05 06:47:27 +02:00
|
|
|
.endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-11-28 20:55:31 +01:00
|
|
|
#
|
2005-05-08 00:16:38 +02:00
|
|
|
# Config file related settings - see doc/pkgsrc.txt
|
2002-02-07 21:34:21 +01:00
|
|
|
#
|
|
|
|
PKG_SYSCONFVAR?= ${PKGBASE}
|
2001-11-28 20:55:31 +01:00
|
|
|
PKG_SYSCONFSUBDIR?= # empty
|
2004-03-29 08:49:04 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
2003-09-02 08:59:37 +02:00
|
|
|
PKG_SYSCONFDEPOTBASE= # empty
|
2003-09-05 13:34:25 +02:00
|
|
|
PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE}
|
2004-03-29 08:49:04 +02:00
|
|
|
.else
|
|
|
|
. if !empty(PKG_SYSCONFBASE:M${PREFIX}) || \
|
|
|
|
!empty(PKG_SYSCONFBASE:M${PREFIX}/*)
|
2003-09-02 08:59:37 +02:00
|
|
|
PKG_SYSCONFDEPOTBASE= # empty
|
2003-09-05 13:34:25 +02:00
|
|
|
PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE}
|
2001-11-28 20:55:31 +01:00
|
|
|
. else
|
2004-03-29 08:49:04 +02:00
|
|
|
PKG_SYSCONFDEPOTBASE= ${PKG_SYSCONFBASE}/${DEPOT_SUBDIR}
|
|
|
|
PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDEPOTBASE}/${PKGNAME}
|
2001-11-28 20:55:31 +01:00
|
|
|
. endif
|
|
|
|
.endif
|
2004-03-29 08:49:04 +02:00
|
|
|
.if empty(PKG_SYSCONFSUBDIR)
|
|
|
|
DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}
|
|
|
|
.else
|
|
|
|
DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR}
|
|
|
|
.endif
|
|
|
|
PKG_SYSCONFDIR= ${DFLT_PKG_SYSCONFDIR}
|
|
|
|
.if defined(PKG_SYSCONFDIR.${PKG_SYSCONFVAR})
|
|
|
|
PKG_SYSCONFDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
|
|
|
|
PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
|
|
|
|
PKG_SYSCONFDEPOTBASE= # empty
|
|
|
|
.endif
|
2006-04-26 07:58:44 +02:00
|
|
|
PKG_SYSCONFDIR_PERMS?= ${ROOT_USER} ${ROOT_GROUP} 755
|
2001-11-28 20:55:31 +01:00
|
|
|
|
2005-02-11 17:36:49 +01:00
|
|
|
ALL_ENV+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q}
|
2003-09-17 04:38:22 +02:00
|
|
|
BUILD_DEFS+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR
|
2001-11-28 20:55:31 +01:00
|
|
|
|
2005-04-30 06:35:54 +02:00
|
|
|
# These are all of the tools use by pkgsrc Makefiles. This should
|
|
|
|
# eventually be split up into lists of tools required by different
|
|
|
|
# phases of a pkgsrc build.
|
|
|
|
#
|
2005-07-15 20:27:48 +02:00
|
|
|
USE_TOOLS+= \
|
2005-05-16 06:48:05 +02:00
|
|
|
[ awk basename cat chgrp chmod chown cmp cp cut dirname echo \
|
|
|
|
egrep env false file find grep head hostname id install ln ls \
|
2005-05-16 07:11:51 +02:00
|
|
|
mkdir mv pax pwd rm rmdir sed sh sort tail test touch tr true \
|
|
|
|
wc xargs
|
2005-05-16 06:30:41 +02:00
|
|
|
|
2005-05-16 17:20:15 +02:00
|
|
|
# bsd.wrapper.mk
|
2005-07-15 20:27:48 +02:00
|
|
|
USE_TOOLS+= expr
|
2005-05-16 17:20:15 +02:00
|
|
|
|
2005-05-16 06:54:11 +02:00
|
|
|
# bsd.bulk-pkg.mk uses certain tools
|
2005-05-16 06:30:41 +02:00
|
|
|
.if defined(BATCH)
|
2005-07-15 20:27:48 +02:00
|
|
|
USE_TOOLS+= tee tsort
|
2005-05-16 06:30:41 +02:00
|
|
|
.endif
|
2005-05-16 02:11:50 +02:00
|
|
|
|
2005-11-04 21:06:14 +01:00
|
|
|
# We need shlock and sleep if we're using locking to synchronize multiple
|
|
|
|
# builds over the same pkgsrc tree.
|
2005-05-16 02:00:35 +02:00
|
|
|
#
|
|
|
|
.if ${PKGSRC_LOCKTYPE} != "none"
|
2005-11-04 21:06:14 +01:00
|
|
|
USE_TOOLS+= shlock sleep
|
2005-05-16 02:00:35 +02:00
|
|
|
.endif
|
|
|
|
|
2005-05-22 22:15:40 +02:00
|
|
|
# Tools
|
2005-04-15 04:04:57 +02:00
|
|
|
.include "../../mk/tools/bsd.tools.mk"
|
2004-04-27 21:23:34 +02:00
|
|
|
|
2005-05-29 19:12:15 +02:00
|
|
|
# Unprivileged builds
|
|
|
|
.include "../../mk/unprivileged.mk"
|
|
|
|
|
2005-05-14 08:04:44 +02:00
|
|
|
# If NO_BUILD is defined, default to not needing a compiler.
|
|
|
|
.if defined(NO_BUILD)
|
|
|
|
USE_LANGUAGES?= # empty
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Get the proper dependencies and set the PATH to use the compiler
|
|
|
|
# named in PKGSRC_COMPILER.
|
|
|
|
#
|
|
|
|
.include "../../mk/compiler.mk"
|
|
|
|
|
2005-04-05 16:00:33 +02:00
|
|
|
.include "../../mk/wrapper/bsd.wrapper.mk"
|
2002-08-22 10:21:26 +02:00
|
|
|
|
2006-05-06 05:28:44 +02:00
|
|
|
.if defined(ABI_DEPENDS) || defined(BUILD_ABI_DEPENDS)
|
2006-04-06 08:21:32 +02:00
|
|
|
. if !empty(USE_ABI_DEPENDS:M[yY][eE][sS])
|
|
|
|
DEPENDS+= ${ABI_DEPENDS}
|
2006-05-06 05:28:44 +02:00
|
|
|
BUILD_DEPENDS+= ${BUILD_ABI_DEPENDS}
|
2004-08-24 02:27:13 +02:00
|
|
|
. else
|
2006-04-06 08:21:32 +02:00
|
|
|
BUILD_DEFS+= USE_ABI_DEPENDS
|
2004-08-24 02:27:13 +02:00
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2005-01-24 20:32:33 +01:00
|
|
|
# Find out the PREFIX of dependencies where the PREFIX is needed at build time.
|
|
|
|
.if defined(EVAL_PREFIX)
|
2005-05-12 22:41:10 +02:00
|
|
|
FIND_PREFIX:= ${EVAL_PREFIX}
|
|
|
|
. include "../../mk/find-prefix.mk"
|
2005-01-24 20:32:33 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if !defined(_PATH_ORIG)
|
|
|
|
_PATH_ORIG:= ${PATH}
|
|
|
|
MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q}
|
2005-01-27 12:21:46 +01:00
|
|
|
.endif
|
2005-01-24 20:32:33 +01:00
|
|
|
|
2005-11-15 22:21:01 +01:00
|
|
|
.if !empty(PREPEND_PATH:M*)
|
2005-01-24 20:32:33 +01:00
|
|
|
# This is very Special. Because PREPEND_PATH is set with += in reverse order,
|
2005-11-15 22:21:01 +01:00
|
|
|
# this command reverses the order again (since bootstrap bmake doesn't
|
2005-01-24 20:32:33 +01:00
|
|
|
# yet support the :[-1..1] construct).
|
2005-11-15 22:21:01 +01:00
|
|
|
_PATH_CMD= \
|
|
|
|
path=${_PATH_ORIG:Q}; \
|
|
|
|
for i in ${PREPEND_PATH}; do path="$$i:$$path"; done; \
|
|
|
|
${ECHO} "$$path"
|
|
|
|
PATH= ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation
|
2005-01-24 20:32:33 +01:00
|
|
|
.endif
|
2004-02-18 14:32:38 +01:00
|
|
|
|
2004-02-21 13:29:23 +01:00
|
|
|
# Add these bits to the environment use when invoking the sub-make
|
|
|
|
# processes for build-related phases.
|
|
|
|
#
|
2005-01-27 05:05:08 +01:00
|
|
|
BUILD_ENV+= PATH=${PATH:Q}
|
2004-02-06 04:04:50 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
.MAIN: all
|
|
|
|
|
|
|
|
################################################################
|
1999-08-10 12:48:23 +02:00
|
|
|
# Many ways to disable a package.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
2000-09-07 04:29:40 +02:00
|
|
|
# Ignore packages that can't be resold if building for a CDROM.
|
2000-09-06 22:28:32 +02:00
|
|
|
#
|
2000-09-07 17:26:52 +02:00
|
|
|
# Don't build a package if it's restricted and we don't want to
|
|
|
|
# get into that.
|
|
|
|
#
|
2000-09-09 20:45:16 +02:00
|
|
|
# Don't build any package that utilizes strong cryptography, for
|
|
|
|
# when the law of the land forbids it.
|
|
|
|
#
|
2000-09-07 17:26:52 +02:00
|
|
|
# Don't attempt to build packages against X if we don't have X.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
1999-08-10 12:48:23 +02:00
|
|
|
# Don't build a package if it's broken.
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
|
2002-12-27 07:53:42 +01:00
|
|
|
.if !defined(NO_SKIP)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (defined(NO_BIN_ON_CDROM) && defined(FOR_CDROM))
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} may not be placed in binary form on a CDROM:" \
|
2000-08-19 17:32:15 +02:00
|
|
|
" "${NO_BIN_ON_CDROM:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if (defined(NO_SRC_ON_CDROM) && defined(FOR_CDROM))
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} may not be placed in source form on a CDROM:" \
|
2000-08-19 17:32:15 +02:00
|
|
|
" "${NO_SRC_ON_CDROM:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if (defined(RESTRICTED) && defined(NO_RESTRICTED))
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} is restricted:" \
|
2000-08-19 17:32:15 +02:00
|
|
|
" "${RESTRICTED:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if !(${MKCRYPTO} == "YES" || ${MKCRYPTO} == yes)
|
2002-07-02 17:25:49 +02:00
|
|
|
. if defined(CRYPTO)
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} may not be built, because it utilizes strong cryptography"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-09-09 20:45:16 +02:00
|
|
|
. endif
|
2004-03-29 18:01:39 +02:00
|
|
|
. if defined(USE_X11) && !exists(${X11BASE})
|
|
|
|
. if ${X11_TYPE} == "native"
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} uses X11, but ${X11BASE} not found"
|
2004-03-29 18:01:39 +02:00
|
|
|
. else
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${X11BASE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${CHOWN} ${ROOT_USER}:${ROOT_GROUP} ${X11BASE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} ${PKGDIRMODE} ${X11BASE}
|
|
|
|
. endif
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if defined(BROKEN)
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} is marked as broken:" ${BROKEN:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-08-19 17:32:15 +02:00
|
|
|
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(LICENSE)
|
2005-11-18 18:07:13 +01:00
|
|
|
. if defined(ACCEPTABLE_LICENSES) && !empty(ACCEPTABLE_LICENSES:M${LICENSE})
|
1998-07-06 17:10:48 +02:00
|
|
|
_ACCEPTABLE= yes
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # ACCEPTABLE_LICENSES
|
2005-05-14 04:03:00 +02:00
|
|
|
. if !defined(_ACCEPTABLE)
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} has an unacceptable license: ${LICENSE}." \
|
2004-10-01 02:23:18 +02:00
|
|
|
" To view the license, enter \"${MAKE} show-license\"." \
|
|
|
|
" To indicate acceptance, add this line to your /etc/mk.conf:" \
|
|
|
|
" ACCEPTABLE_LICENSES+=${LICENSE}"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # _ACCEPTABLE
|
|
|
|
. endif # LICENSE
|
2000-08-19 17:32:15 +02:00
|
|
|
|
2000-05-31 00:36:53 +02:00
|
|
|
# Define __PLATFORM_OK only if the OS matches the pkg's allowed list.
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(ONLY_FOR_PLATFORM) && !empty(ONLY_FOR_PLATFORM)
|
|
|
|
. for __tmp__ in ${ONLY_FOR_PLATFORM}
|
|
|
|
. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
|
2000-05-31 00:36:53 +02:00
|
|
|
__PLATFORM_OK?= yes
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # MACHINE_PLATFORM
|
|
|
|
. endfor # __tmp__
|
|
|
|
. else # !ONLY_FOR_PLATFORM
|
|
|
|
__PLATFORM_OK?= yes
|
|
|
|
. endif # ONLY_FOR_PLATFORM
|
|
|
|
. for __tmp__ in ${NOT_FOR_PLATFORM}
|
|
|
|
. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
|
|
|
|
. undef __PLATFORM_OK
|
2000-08-19 17:32:15 +02:00
|
|
|
. endif # MACHINE_PLATFORM
|
|
|
|
. endfor # __tmp__
|
2001-07-19 00:43:32 +02:00
|
|
|
. if !defined(__PLATFORM_OK)
|
2002-12-27 07:53:42 +01:00
|
|
|
PKG_SKIP_REASON+= "${PKGNAME} is not available for ${MACHINE_PLATFORM}"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # !__PLATFORM_OK
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2000-08-19 17:32:15 +02:00
|
|
|
#
|
|
|
|
# Now print some error messages that we know we should ignore the pkg
|
|
|
|
#
|
2002-12-07 03:37:56 +01:00
|
|
|
. if defined(PKG_FAIL_REASON) || defined(PKG_SKIP_REASON)
|
2005-12-01 01:17:05 +01:00
|
|
|
.PHONY: do-check-pkg-fail-or-skip-reason
|
2001-06-19 13:54:56 +02:00
|
|
|
fetch checksum extract patch configure all build install package \
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
update depends do-check-pkg-fail-or-skip-reason:
|
2002-12-27 07:53:42 +01:00
|
|
|
. if defined(SKIP_SILENT)
|
2000-08-19 17:32:15 +02:00
|
|
|
@${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2004-12-21 18:30:07 +01:00
|
|
|
@for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON}; do \
|
2006-06-06 00:49:44 +02:00
|
|
|
${PHASE_MSG} "$$str"; \
|
2000-08-19 17:32:15 +02:00
|
|
|
done
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2002-12-07 03:37:56 +01:00
|
|
|
. if defined(PKG_FAIL_REASON)
|
|
|
|
@${FALSE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2002-12-27 07:53:42 +01:00
|
|
|
. endif # SKIP
|
|
|
|
.endif # !NO_SKIP
|
1998-01-25 15:46:10 +01:00
|
|
|
|
2005-12-01 01:17:05 +01:00
|
|
|
.PHONY: do-check-pkg-fail-reason
|
|
|
|
do-check-pkg-fail-reason:
|
|
|
|
@${DO_NADA}
|
|
|
|
|
|
|
|
# This target should appear as a dependency of every top level target that
|
|
|
|
# is intended to be called by the user or by a package different from the
|
|
|
|
# current package.
|
|
|
|
.if defined(PKG_FAIL_REASON)
|
|
|
|
do-check-pkg-fail-reason: do-check-pkg-fail-or-skip-reason
|
|
|
|
.endif
|
|
|
|
|
1998-10-20 18:01:03 +02:00
|
|
|
# Add these defs to the ones dumped into +BUILD_DEFS
|
2000-11-27 23:24:49 +01:00
|
|
|
BUILD_DEFS+= PKGPATH
|
1998-10-20 18:01:03 +02:00
|
|
|
BUILD_DEFS+= OPSYS OS_VERSION MACHINE_ARCH MACHINE_GNU_ARCH
|
2002-01-22 19:15:20 +01:00
|
|
|
BUILD_DEFS+= CPPFLAGS CFLAGS FFLAGS LDFLAGS
|
1998-10-20 18:01:03 +02:00
|
|
|
BUILD_DEFS+= CONFIGURE_ENV CONFIGURE_ARGS
|
2000-07-23 20:42:48 +02:00
|
|
|
BUILD_DEFS+= OBJECT_FMT LICENSE RESTRICTED
|
2000-08-19 00:43:19 +02:00
|
|
|
BUILD_DEFS+= NO_SRC_ON_FTP NO_SRC_ON_CDROM
|
|
|
|
BUILD_DEFS+= NO_BIN_ON_FTP NO_BIN_ON_CDROM
|
1998-10-20 18:01:03 +02:00
|
|
|
|
2001-07-07 19:10:36 +02:00
|
|
|
.if defined(OSVERSION_SPECIFIC)
|
|
|
|
BUILD_DEFS+= OSVERSION_SPECIFIC
|
|
|
|
.endif # OSVERSION_SPECIFIC
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: all
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(all)
|
2004-03-22 05:07:15 +01:00
|
|
|
all: ${_PKGSRC_BUILD_TARGETS}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
################################################################
|
|
|
|
# The following are used to create easy dummy targets for
|
|
|
|
# disabling some bit of default target behavior you don't want.
|
|
|
|
# They still check to see if the target exists, and if so don't
|
|
|
|
# do anything, since you might want to set this globally for a
|
1999-08-10 12:48:23 +02:00
|
|
|
# group of packages in a Makefile.inc, but still be able to
|
1997-08-20 12:21:05 +02:00
|
|
|
# override from an individual Makefile.
|
|
|
|
################################################################
|
|
|
|
|
|
|
|
# Disable checksum
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: checksum
|
2005-06-04 22:56:47 +02:00
|
|
|
.if (defined(NO_CHECKSUM) || exists(${_EXTRACT_COOKIE})) && !target(checksum)
|
1997-08-20 12:21:05 +02:00
|
|
|
checksum: fetch
|
|
|
|
@${DO_NADA}
|
|
|
|
.endif
|
|
|
|
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
# Disable wrapper
|
|
|
|
.PHONY: wrapper
|
2005-03-24 18:46:00 +01:00
|
|
|
.if defined(NO_BUILD) && !target(wrapper)
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
wrapper: patch
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${_WRAPPER_COOKIE}
|
2002-08-22 10:21:26 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Disable configure
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: configure
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(NO_CONFIGURE) && !target(configure)
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
configure: wrapper
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${_CONFIGURE_COOKIE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Disable build
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: build
|
2006-03-15 17:20:11 +01:00
|
|
|
.if defined(NO_BUILD)
|
|
|
|
_build: configure
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${_BUILD_COOKIE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
################################################################
|
|
|
|
# More standard targets start here.
|
|
|
|
#
|
|
|
|
# These are the body of the build/install framework. If you are
|
|
|
|
# not happy with the default actions, and you can't solve it by
|
|
|
|
# adding pre-* or post-* targets/scripts, override these.
|
|
|
|
################################################################
|
|
|
|
|
2006-06-04 06:31:47 +02:00
|
|
|
# acquire-lock, release-lock are .USE macro targets for acquiring and
|
|
|
|
# release coarse-grained locks.
|
|
|
|
#
|
2006-06-04 08:09:36 +02:00
|
|
|
_LOCKFILE= ${WRKDIR}/.lockfile
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
|
2006-06-04 06:31:47 +02:00
|
|
|
acquire-lock: .USE
|
2002-01-19 22:29:41 +01:00
|
|
|
.if ${PKGSRC_LOCKTYPE} == "none"
|
2006-06-04 06:31:47 +02:00
|
|
|
@${DO_NADA}
|
2002-01-19 22:29:41 +01:00
|
|
|
.else
|
2006-06-04 06:31:47 +02:00
|
|
|
@if ${TEST} ! -x ${SHLOCK:Q}""; then \
|
|
|
|
${ERROR_MSG} "The ${SHLOCK:Q} utility does not exist, and is necessary for locking."; \
|
|
|
|
${ERROR_MSG} "Please \""${MAKE:Q}" install\" in ../../pkgtools/shlock."; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
. if !defined(OBJHOSTNAME)
|
|
|
|
@${ERROR_MSG} "PKGSRC_LOCKTYPE needs OBJHOSTNAME defined."; \
|
|
|
|
exit 1
|
|
|
|
. endif
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}set -e; \
|
2003-06-14 18:53:00 +02:00
|
|
|
ppid=`${PS} -p $$$$ -o ppid | ${AWK} 'NR == 2 { print $$1 }'`; \
|
2006-06-04 06:31:47 +02:00
|
|
|
if ${TEST} -z "$$ppid"; then \
|
|
|
|
${ERROR_MSG} "No parent process ID found."; \
|
|
|
|
exit 1; \
|
2004-07-04 00:11:56 +02:00
|
|
|
fi; \
|
2006-06-04 06:31:47 +02:00
|
|
|
while ${TRUE}; do \
|
2006-06-04 08:09:36 +02:00
|
|
|
if ${TEST} -f /var/run/dmesg.boot -a -f ${_LOCKFILE}; then \
|
|
|
|
rebooted=`${FIND} /var/run/dmesg.boot -newer ${_LOCKFILE} -print`; \
|
2006-06-04 06:31:47 +02:00
|
|
|
if ${TEST} -n "$$rebooted"; then \
|
2006-06-04 08:09:36 +02:00
|
|
|
${STEP_MSG} "Removing stale ${_LOCKFILE}"; \
|
|
|
|
${RM} -f ${_LOCKFILE}; \
|
2005-02-12 01:27:41 +01:00
|
|
|
fi; \
|
2003-09-09 13:00:30 +02:00
|
|
|
fi; \
|
2006-06-05 04:22:49 +02:00
|
|
|
${MKDIR} ${_LOCKFILE:H}; \
|
2006-06-04 08:09:36 +02:00
|
|
|
if ${SHLOCK} -f ${_LOCKFILE} -p $$ppid; then \
|
2006-06-04 06:31:47 +02:00
|
|
|
break; \
|
|
|
|
fi; \
|
|
|
|
case ${PKGSRC_LOCKTYPE:Q}"" in \
|
2006-06-04 08:09:36 +02:00
|
|
|
once) ${ERROR_MSG} "Lock is held by pid `${CAT} ${_LOCKFILE}`"; \
|
2006-06-04 06:31:47 +02:00
|
|
|
exit 1; \
|
|
|
|
;; \
|
2006-06-04 08:09:36 +02:00
|
|
|
sleep) ${STEP_MSG} "Lock is held by pid `${CAT} ${_LOCKFILE}`"; \
|
2006-06-04 06:31:47 +02:00
|
|
|
${SLEEP} ${PKGSRC_SLEEPSECS}; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
done
|
|
|
|
. if defined(PKG_VERBOSE)
|
2006-06-04 08:09:36 +02:00
|
|
|
@${STEP_MSG} "Lock acquired for ${.TARGET:S/^acquire-//:S/-lock$//} on behalf of process `${CAT} ${_LOCKFILE}`"
|
2006-06-04 06:31:47 +02:00
|
|
|
. endif
|
|
|
|
.endif
|
2002-01-19 22:29:41 +01:00
|
|
|
|
2006-06-04 06:31:47 +02:00
|
|
|
release-lock: .USE
|
|
|
|
.if ${PKGSRC_LOCKTYPE} == "none"
|
|
|
|
@${DO_NADA}
|
|
|
|
.else
|
|
|
|
. if defined(PKG_VERBOSE)
|
2006-06-04 08:09:36 +02:00
|
|
|
@${STEP_MSG} "Lock released for ${.TARGET:S/^release-//:S/-lock$//} on behalf of process `${CAT} ${_LOCKFILE}`"
|
2006-06-04 06:31:47 +02:00
|
|
|
. endif
|
2006-06-04 08:09:36 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${_LOCKFILE}
|
2006-06-04 06:31:47 +02:00
|
|
|
.endif
|
1998-01-22 11:20:48 +01:00
|
|
|
|
2006-06-08 18:21:51 +02:00
|
|
|
.PHONY: makedirs
|
|
|
|
makedirs: ${WRKDIR}
|
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
${WRKDIR}:
|
|
|
|
.if !defined(KEEP_WRKDIR)
|
|
|
|
. if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
|
2006-06-04 07:25:08 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2006-06-04 08:09:36 +02:00
|
|
|
${TEST} -f ${_LOCKFILE} || ${RM} -fr ${WRKDIR}
|
2002-02-25 05:43:55 +01:00
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${WRKDIR}
|
2006-06-11 04:14:45 +02:00
|
|
|
|
|
|
|
# Create a symlink from ${WRKDIR} to the package directory if
|
|
|
|
# CREATE_WRKDIR_SYMLINK is "yes".
|
|
|
|
#
|
|
|
|
CREATE_WRKDIR_SYMLINK?= yes
|
|
|
|
|
|
|
|
.if defined(WRKOBJDIR) && !empty(CREATE_WRKDIR_SYMLINK:M[Yy][Ee][Ss])
|
|
|
|
makedirs: ${.CURDIR}/${WRKDIR_BASENAME}
|
|
|
|
${.CURDIR}/${WRKDIR_BASENAME}:
|
2002-02-25 05:43:55 +01:00
|
|
|
. if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2006-06-11 04:14:45 +02:00
|
|
|
${TEST} -f ${_LOCKFILE} || ${RM} -f ${.TARGET}
|
2002-02-25 05:43:55 +01:00
|
|
|
. endif
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2006-06-11 04:14:45 +02:00
|
|
|
if ${LN} -s ${WRKDIR} ${.TARGET} 2>/dev/null; then \
|
|
|
|
${ECHO} "${.TARGET:T} -> ${WRKDIR}"; \
|
2002-02-25 05:43:55 +01:00
|
|
|
fi
|
2006-06-11 04:14:45 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-11-30 04:48:14 +01:00
|
|
|
# Configure
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-11-30 06:03:06 +01:00
|
|
|
# _CONFIGURE_PREREQ is a list of targets to run after pre-configure but before
|
|
|
|
# do-configure. These targets typically edit the files used by the
|
2003-07-08 13:48:37 +02:00
|
|
|
# do-configure target. The targets are run as dependencies of
|
2003-07-08 11:20:30 +02:00
|
|
|
# pre-configure-override.
|
2001-11-30 06:03:06 +01:00
|
|
|
#
|
|
|
|
# _CONFIGURE_POSTREQ is a list of targets to run after do-configure but before
|
|
|
|
# post-configure. These targets typically edit the files generated by
|
|
|
|
# the do-configure target that are used during the build phase.
|
|
|
|
|
2003-08-27 13:29:56 +02:00
|
|
|
.if defined(USE_PKGLOCALEDIR)
|
|
|
|
_PKGLOCALEDIR= ${PREFIX}/${PKGLOCALEDIR}/locale
|
|
|
|
REPLACE_LOCALEDIR_PATTERNS?= # empty
|
|
|
|
_REPLACE_LOCALEDIR_PATTERNS= ${REPLACE_LOCALEDIR_PATTERNS}
|
|
|
|
. if defined(HAS_CONFIGURE) || defined(GNU_CONFIGURE)
|
2004-02-13 13:03:06 +01:00
|
|
|
_REPLACE_LOCALEDIR_PATTERNS+= [Mm]akefile.in*
|
2003-08-27 13:29:56 +02:00
|
|
|
. else
|
2004-02-13 13:03:06 +01:00
|
|
|
_REPLACE_LOCALEDIR_PATTERNS+= [Mm]akefile*
|
2003-08-27 13:29:56 +02:00
|
|
|
. endif
|
2005-05-20 23:36:05 +02:00
|
|
|
_REPLACE_LOCALEDIR_PATTERNS_FIND_cmd= \
|
2005-05-21 03:55:53 +02:00
|
|
|
cd ${WRKSRC} && \
|
|
|
|
${ECHO} "__dummy-entry__" && \
|
|
|
|
${FIND} . \( ${_REPLACE_LOCALEDIR_PATTERNS:C/.*/-o -name "&"/g:S/-o//1} \) -print \
|
|
|
|
| ${SED} -e 's|^\./||' \
|
|
|
|
| ${SORT} -u
|
|
|
|
REPLACE_LOCALEDIR?= # empty
|
|
|
|
_REPLACE_LOCALEDIR= \
|
|
|
|
${REPLACE_LOCALEDIR} \
|
|
|
|
${_REPLACE_LOCALEDIR_PATTERNS_FIND_cmd:sh:N__dummy-entry__:N*.orig}
|
2003-08-27 13:29:56 +02:00
|
|
|
|
|
|
|
_CONFIGURE_PREREQ+= subst-pkglocaledir
|
|
|
|
. if empty(USE_PKGLOCALEDIR:M[nN][oO])
|
|
|
|
SUBST_CLASSES+= pkglocaledir
|
|
|
|
. endif
|
2006-01-21 11:10:42 +01:00
|
|
|
SUBST_MESSAGE.pkglocaledir= Fixing locale directory references.
|
2003-08-27 13:29:56 +02:00
|
|
|
SUBST_FILES.pkglocaledir= ${_REPLACE_LOCALEDIR}
|
|
|
|
SUBST_SED.pkglocaledir= \
|
|
|
|
-e 's|^\(localedir[ :]*=\).*|\1 ${_PKGLOCALEDIR}|' \
|
|
|
|
-e 's|^\(gnulocaledir[ :]*=\).*|\1 ${_PKGLOCALEDIR}|' \
|
2004-06-23 13:42:18 +02:00
|
|
|
-e 's|\(-DLOCALEDIR[ ]*=\)[^ ]*\(\.\*\)|\1"\\"${_PKGLOCALEDIR}\\""\2|'
|
2003-08-27 13:29:56 +02:00
|
|
|
.endif
|
|
|
|
|
2001-11-30 04:48:14 +01:00
|
|
|
.if defined(REPLACE_PERL)
|
2003-07-09 18:18:06 +02:00
|
|
|
REPLACE_INTERPRETER+= perl
|
2006-03-09 16:58:10 +01:00
|
|
|
REPLACE.perl.old= .*/bin/perl
|
|
|
|
REPLACE.perl.new= ${PERL5}
|
|
|
|
REPLACE_FILES.perl= ${REPLACE_PERL}
|
2003-07-09 18:07:29 +02:00
|
|
|
.endif
|
|
|
|
|
2004-01-19 15:54:26 +01:00
|
|
|
.if defined(REPLACE_INTERPRETER)
|
2006-03-09 16:58:10 +01:00
|
|
|
|
|
|
|
# After 2006Q2, all instances of _REPLACE.* and _REPLACE_FILES.* should
|
|
|
|
# have been replaced with REPLACE.* and REPLACE_FILES.*. This code is
|
|
|
|
# then no longer needed.
|
|
|
|
. for _lang_ in ${REPLACE_INTERPRETER}
|
|
|
|
REPLACE.${_lang_}.old?= ${_REPLACE.${_lang_}.old}
|
|
|
|
REPLACE.${_lang_}.new?= ${_REPLACE.${_lang_}.new}
|
|
|
|
REPLACE_FILES.${_lang_}?= ${_REPLACE_FILES.${_lang_}}
|
|
|
|
. endfor
|
|
|
|
|
2003-07-09 18:07:29 +02:00
|
|
|
_CONFIGURE_PREREQ+= replace-interpreter
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: replace-interpreter
|
2003-07-09 18:07:29 +02:00
|
|
|
replace-interpreter:
|
|
|
|
. for lang in ${REPLACE_INTERPRETER}
|
2006-03-10 12:02:00 +01:00
|
|
|
. for pattern in ${REPLACE_FILES.${lang}}
|
2001-11-30 04:48:14 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
cd ${WRKSRC}; \
|
2004-03-02 16:25:23 +01:00
|
|
|
for f in ${pattern}; do \
|
2002-03-24 15:06:22 +01:00
|
|
|
if [ -f $${f} ]; then \
|
2006-03-10 12:02:00 +01:00
|
|
|
${SED} -e '1s|^#!${REPLACE.${lang}.old}|#!${REPLACE.${lang}.new}|' \
|
2002-03-24 15:06:22 +01:00
|
|
|
$${f} > $${f}.new; \
|
|
|
|
if [ -x $${f} ]; then \
|
|
|
|
${CHMOD} a+x $${f}.new; \
|
|
|
|
fi; \
|
|
|
|
${MV} -f $${f}.new $${f}; \
|
2006-02-02 22:15:46 +01:00
|
|
|
else \
|
|
|
|
${ECHO_MSG} "[bsd.pkg.mk:replace-interpreter] WARNING: Skipping non-existent file \"$$f\"." 1>&2; \
|
2002-03-24 15:06:22 +01:00
|
|
|
fi; \
|
|
|
|
done
|
2004-03-02 16:25:23 +01:00
|
|
|
. endfor
|
2003-07-09 18:07:29 +02:00
|
|
|
. endfor
|
2001-06-27 13:40:25 +02:00
|
|
|
.endif
|
2000-07-28 12:33:56 +02:00
|
|
|
|
2004-01-19 15:54:26 +01:00
|
|
|
.if defined(USE_LIBTOOL) && defined(LTCONFIG_OVERRIDE)
|
2001-11-30 04:19:04 +01:00
|
|
|
_CONFIGURE_PREREQ+= do-ltconfig-override
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-ltconfig-override
|
2001-11-30 04:19:04 +01:00
|
|
|
do-ltconfig-override:
|
2001-10-24 21:42:28 +02:00
|
|
|
. for ltconfig in ${LTCONFIG_OVERRIDE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if [ -f ${ltconfig} ]; then \
|
|
|
|
${RM} -f ${ltconfig}; \
|
2004-02-09 02:30:59 +01:00
|
|
|
${ECHO} "${RM} -f libtool; ${LN} -s ${_LIBTOOL} libtool" \
|
2001-10-24 21:42:28 +02:00
|
|
|
> ${ltconfig}; \
|
|
|
|
${CHMOD} +x ${ltconfig}; \
|
1999-12-07 09:55:58 +01:00
|
|
|
fi
|
2001-10-24 21:42:28 +02:00
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
|
2002-07-16 17:02:01 +02:00
|
|
|
_CONFIGURE_PREREQ+= do-config-star-override
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-config-star-override
|
2002-07-16 17:02:01 +02:00
|
|
|
do-config-star-override:
|
2005-01-14 15:08:06 +01:00
|
|
|
.if defined(GNU_CONFIGURE)
|
|
|
|
. if !empty(CONFIG_GUESS_OVERRIDE)
|
|
|
|
. for _pattern_ in ${CONFIG_GUESS_OVERRIDE}
|
2004-02-14 16:22:42 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if [ -f "$$file" ]; then \
|
|
|
|
${RM} -f $$file; \
|
2004-10-07 04:01:37 +02:00
|
|
|
${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.guess \
|
2004-02-14 16:22:42 +01:00
|
|
|
$$file; \
|
|
|
|
fi; \
|
2002-07-16 17:02:01 +02:00
|
|
|
done
|
2005-01-14 15:08:06 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
. if !empty(CONFIG_SUB_OVERRIDE)
|
|
|
|
. for _pattern_ in ${CONFIG_SUB_OVERRIDE}
|
2004-02-14 16:22:42 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if [ -f "$$file" ]; then \
|
|
|
|
${RM} -f $$file; \
|
2004-10-07 04:01:37 +02:00
|
|
|
${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.sub \
|
2004-02-14 16:22:42 +01:00
|
|
|
$$file; \
|
|
|
|
fi; \
|
2002-07-16 17:02:01 +02:00
|
|
|
done
|
2005-01-14 15:08:06 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
. if !empty(CONFIG_RPATH_OVERRIDE)
|
|
|
|
. for _pattern_ in ${CONFIG_RPATH_OVERRIDE}
|
2005-01-14 01:10:01 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if [ -f "$$file" ]; then \
|
|
|
|
${RM} -f $$file; \
|
|
|
|
${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.rpath \
|
|
|
|
$$file; \
|
|
|
|
fi; \
|
|
|
|
done
|
2005-01-14 15:08:06 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
2002-07-16 17:02:01 +02:00
|
|
|
.endif
|
|
|
|
|
2006-01-03 01:41:51 +01:00
|
|
|
.if defined(CONFIGURE_SCRIPTS_OVERRIDE)
|
|
|
|
_CONFIGURE_PREREQ+= do-configure-scripts-override
|
|
|
|
.PHONY: do-configure-scripts-override
|
|
|
|
do-configure-scripts-override:
|
|
|
|
. for _pattern_ in ${CONFIGURE_SCRIPTS_OVERRIDE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if ${TEST} -f "$$file"; then \
|
|
|
|
${AWK} '/ *-recheck *\| *--recheck.*\)/ { \
|
|
|
|
print; \
|
|
|
|
print " # Avoid regenerating for rechecks on pkgsrc"; \
|
|
|
|
print " exit 0"; \
|
|
|
|
next; \
|
|
|
|
} \
|
|
|
|
{ print }' $$file > $$file.override && \
|
|
|
|
${CHMOD} +x $$file.override && \
|
|
|
|
${MV} -f $$file.override $$file; \
|
|
|
|
fi; \
|
|
|
|
done
|
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
|
2003-08-27 13:29:56 +02:00
|
|
|
PKGCONFIG_OVERRIDE_SED= \
|
2004-10-25 20:02:20 +02:00
|
|
|
'/^Libs:.*[ ]/s|-L\([ ]*[^ ]*\)|${COMPILER_RPATH_FLAG}\1 -L\1|g'
|
|
|
|
PKGCONFIG_OVERRIDE_STAGE?= pre-configure
|
2003-08-27 13:29:56 +02:00
|
|
|
|
|
|
|
.if defined(PKGCONFIG_OVERRIDE) && !empty(PKGCONFIG_OVERRIDE)
|
2004-10-25 20:02:20 +02:00
|
|
|
. if ${PKGCONFIG_OVERRIDE_STAGE} == "pre-configure"
|
2003-08-27 13:29:56 +02:00
|
|
|
_CONFIGURE_PREREQ+= subst-pkgconfig
|
2004-10-25 20:02:20 +02:00
|
|
|
. elif ${PKGCONFIG_OVERRIDE_STAGE} == "post-configure"
|
|
|
|
_CONFIGURE_POSTREQ+= subst-pkgconfig
|
|
|
|
. else
|
|
|
|
SUBST_STAGE.pkgconfig= ${PKGCONFIG_OVERRIDE_STAGE}
|
|
|
|
. endif
|
2003-08-27 13:29:56 +02:00
|
|
|
SUBST_CLASSES+= pkgconfig
|
2006-01-21 11:10:42 +01:00
|
|
|
SUBST_MESSAGE.pkgconfig= Adding rpaths to pkgconfig files.
|
2003-08-27 13:29:56 +02:00
|
|
|
SUBST_FILES.pkgconfig= ${PKGCONFIG_OVERRIDE:S/^${WRKSRC}\///}
|
|
|
|
SUBST_SED.pkgconfig= ${PKGCONFIG_OVERRIDE_SED}
|
2002-10-30 03:25:29 +01:00
|
|
|
.endif
|
|
|
|
|
2004-12-01 10:52:59 +01:00
|
|
|
# By adding this target, it makes sure the above PREREQ's work.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: pre-configure-override
|
2003-07-08 11:20:30 +02:00
|
|
|
pre-configure-override: ${_CONFIGURE_PREREQ}
|
2003-07-09 16:23:56 +02:00
|
|
|
@${DO_NADA}
|
2003-07-08 11:20:30 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-configure
|
2001-10-24 21:42:28 +02:00
|
|
|
.if !target(do-configure)
|
2004-02-12 14:16:02 +01:00
|
|
|
do-configure:
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(HAS_CONFIGURE)
|
2005-10-08 15:16:28 +02:00
|
|
|
. for _dir_ in ${CONFIGURE_DIRS}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD} \
|
2006-05-10 19:53:34 +02:00
|
|
|
cd ${WRKSRC} && cd ${_dir_} && \
|
2005-10-08 15:16:28 +02:00
|
|
|
${SETENV} \
|
2006-05-10 19:53:34 +02:00
|
|
|
AWK=${TOOLS_AWK:Q} \
|
|
|
|
INSTALL=${INSTALL:Q}\ -c\ -o\ ${BINOWN}\ -g\ ${BINGRP} \
|
|
|
|
ac_given_INSTALL=${INSTALL:Q}\ -c\ -o\ ${BINOWN}\ -g\ ${BINGRP} \
|
|
|
|
INSTALL_DATA=${INSTALL_DATA:Q} \
|
|
|
|
INSTALL_PROGRAM=${INSTALL_PROGRAM:Q} \
|
|
|
|
INSTALL_GAME=${INSTALL_GAME:Q} \
|
|
|
|
INSTALL_GAME_DATA=${INSTALL_GAME_DATA:Q} \
|
|
|
|
INSTALL_SCRIPT=${INSTALL_SCRIPT:Q} \
|
2004-12-21 18:30:07 +01:00
|
|
|
${CONFIGURE_ENV} ${CONFIG_SHELL} \
|
2004-01-25 11:36:15 +01:00
|
|
|
${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS}
|
2002-08-22 10:21:26 +02:00
|
|
|
. endfor
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2005-05-16 20:01:12 +02:00
|
|
|
. if defined(USE_IMAKE)
|
2005-10-08 15:16:28 +02:00
|
|
|
. for _dir_ in ${CONFIGURE_DIRS}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
cd ${WRKSRC}; cd ${_dir_}; \
|
|
|
|
${SETENV} ${SCRIPTS_ENV} XPROJECTROOT=${X11BASE} ${XMKMF}
|
2002-12-29 20:02:06 +01:00
|
|
|
. endfor
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2001-11-30 06:03:06 +01:00
|
|
|
.endif
|
|
|
|
|
2004-01-19 15:54:26 +01:00
|
|
|
.if defined(USE_LIBTOOL) && \
|
|
|
|
(defined(LIBTOOL_OVERRIDE) || defined(SHLIBTOOL_OVERRIDE))
|
2001-11-30 06:03:06 +01:00
|
|
|
_CONFIGURE_POSTREQ+= do-libtool-override
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-libtool-override
|
2001-11-30 06:03:06 +01:00
|
|
|
do-libtool-override:
|
2003-01-10 09:44:18 +01:00
|
|
|
. if defined(LIBTOOL_OVERRIDE)
|
2004-02-14 18:18:49 +01:00
|
|
|
. for _pattern_ in ${LIBTOOL_OVERRIDE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if [ -f "$$file" ]; then \
|
|
|
|
${RM} -f $$file; \
|
|
|
|
(${ECHO} '#!${CONFIG_SHELL}'; \
|
|
|
|
${ECHO} 'exec ${_LIBTOOL} "$$@"'; \
|
|
|
|
) > $$file; \
|
|
|
|
${CHMOD} +x $$file; \
|
2004-02-01 02:09:09 +01:00
|
|
|
fi; \
|
2004-02-14 18:18:49 +01:00
|
|
|
done
|
2003-01-10 09:44:18 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
. if defined(SHLIBTOOL_OVERRIDE)
|
2004-02-14 18:18:49 +01:00
|
|
|
. for _pattern_ in ${SHLIBTOOL_OVERRIDE}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
|
|
|
for file in ${_pattern_}; do \
|
|
|
|
if [ -f "$$file" ]; then \
|
|
|
|
${RM} -f $$file; \
|
|
|
|
(${ECHO} '#!${CONFIG_SHELL}'; \
|
|
|
|
${ECHO} 'exec ${_SHLIBTOOL} "$$@"'; \
|
|
|
|
) > $$file; \
|
|
|
|
${CHMOD} +x $$file; \
|
2004-02-09 02:52:14 +01:00
|
|
|
fi; \
|
2004-02-14 18:18:49 +01:00
|
|
|
done
|
2003-01-10 09:44:18 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: post-configure
|
2001-11-30 06:03:06 +01:00
|
|
|
post-configure: ${_CONFIGURE_POSTREQ}
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Build
|
|
|
|
|
2005-11-04 12:27:41 +01:00
|
|
|
BUILD_DIRS?= ${CONFIGURE_DIRS}
|
2004-01-13 01:40:25 +01:00
|
|
|
BUILD_MAKE_FLAGS?= ${MAKE_FLAGS}
|
2002-09-12 12:34:29 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-build
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(do-build)
|
|
|
|
do-build:
|
2005-10-08 15:16:28 +02:00
|
|
|
. for _dir_ in ${BUILD_DIRS}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD} \
|
2006-05-10 19:53:34 +02:00
|
|
|
cd ${WRKSRC} && cd ${_dir_} && \
|
2005-10-08 15:16:28 +02:00
|
|
|
${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} \
|
|
|
|
-f ${MAKEFILE} ${BUILD_TARGET}
|
2002-09-12 12:34:29 +02:00
|
|
|
. endfor
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2002-11-07 05:22:29 +01:00
|
|
|
#Test
|
|
|
|
|
2004-01-13 01:40:25 +01:00
|
|
|
TEST_DIRS?= ${BUILD_DIRS}
|
|
|
|
TEST_ENV+= ${MAKE_ENV}
|
|
|
|
TEST_MAKE_FLAGS?= ${MAKE_FLAGS}
|
2002-11-07 05:22:29 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-test
|
2002-11-07 05:22:29 +01:00
|
|
|
.if !target(do-test)
|
|
|
|
do-test:
|
2003-09-13 08:21:36 +02:00
|
|
|
. if defined(TEST_TARGET) && !empty(TEST_TARGET)
|
2005-10-08 15:16:28 +02:00
|
|
|
. for _dir_ in ${TEST_DIRS}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD} \
|
2006-05-10 19:53:34 +02:00
|
|
|
cd ${WRKSRC} && cd ${_dir_} && \
|
2005-10-08 15:16:28 +02:00
|
|
|
${SETENV} ${TEST_ENV} ${MAKE_PROGRAM} ${TEST_MAKE_FLAGS} \
|
|
|
|
-f ${MAKEFILE} ${TEST_TARGET}
|
2002-11-07 05:22:29 +01:00
|
|
|
. endfor
|
|
|
|
. else
|
|
|
|
@${DO_NADA}
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
.include "${PKGSRCDIR}/mk/flavor/bsd.flavor.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# Dependencies
|
|
|
|
.include "${PKGSRCDIR}/mk/depends/bsd.depends.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# Check
|
|
|
|
.include "${PKGSRCDIR}/mk/check/bsd.check.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# Clean
|
|
|
|
.include "../../mk/bsd.pkg.clean.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2006-06-06 05:05:48 +02:00
|
|
|
# Fetch
|
|
|
|
.include "${PKGSRCDIR}/mk/fetch/bsd.fetch.mk"
|
|
|
|
|
|
|
|
# Extract
|
|
|
|
.include "${PKGSRCDIR}/mk/extract/bsd.extract.mk"
|
|
|
|
|
2006-06-06 06:48:19 +02:00
|
|
|
# Patch
|
|
|
|
.include "${PKGSRCDIR}/mk/patch/bsd.patch.mk"
|
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# Install
|
|
|
|
.include "${PKGSRCDIR}/mk/install/bsd.install.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# Package
|
|
|
|
.include "${PKGSRCDIR}/mk/package/bsd.package.mk"
|
2000-11-29 14:18:22 +01:00
|
|
|
|
2006-06-04 07:26:45 +02:00
|
|
|
.include "${PKGSRCDIR}/mk/bsd.pkg.update.mk"
|
|
|
|
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
.PHONY: acquire-wrapper-lock acquire-configure-lock acquire-build-lock
|
2006-06-04 06:31:47 +02:00
|
|
|
acquire-wrapper-lock: acquire-lock
|
|
|
|
acquire-configure-lock: acquire-lock
|
|
|
|
acquire-build-lock: acquire-lock
|
2002-01-19 22:29:41 +01:00
|
|
|
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
.PHONY: release-wrapper-lock release-configure-lock release-build-lock
|
2006-06-04 06:31:47 +02:00
|
|
|
release-wrapper-lock: release-lock
|
|
|
|
release-configure-lock: release-lock
|
|
|
|
release-build-lock: release-lock
|
Work out the type of shared libraries once, at "make install" time, and
do this dynamically. This means that we no longer have to have a
separate pkgsrc copy of bsd.own.mk, which was a maintenance nightmare,
and usually out of date, and quite costly too (with a calculation of
whether NetBSD-current was being run every time the file was read).
Also, on a.out, add ldconfig lines to the generated PLIST only if they're
not already there, rather than if they were previously there, and ignore
the return value from ldconfig, which cannot be trusted. The ldconfig
calls have largely been made obsolete by the use of -rpath, but keep it
for just now for backwards compatibility.
1999-04-13 16:18:11 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
# Skeleton targets start here
|
2003-03-30 07:06:49 +02:00
|
|
|
#
|
1997-08-20 12:21:05 +02:00
|
|
|
# You shouldn't have to change these. Either add the pre-* or
|
|
|
|
# post-* targets/scripts or redefine the do-* targets. These
|
|
|
|
# targets don't do anything other than checking for cookies and
|
|
|
|
# call the necessary targets/scripts.
|
|
|
|
################################################################
|
|
|
|
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
.PHONY: wrapper
|
|
|
|
.if !target(wrapper)
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
wrapper: patch acquire-wrapper-lock ${_WRAPPER_COOKIE} release-wrapper-lock
|
2002-08-22 10:21:26 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: configure
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(configure)
|
2005-06-04 22:56:47 +02:00
|
|
|
configure: wrapper acquire-configure-lock ${_CONFIGURE_COOKIE} release-configure-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2006-03-15 17:20:11 +01:00
|
|
|
.PHONY: _build
|
|
|
|
.if !target(_build)
|
|
|
|
_build: configure acquire-build-lock ${_BUILD_COOKIE} release-build-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2006-03-15 17:20:11 +01:00
|
|
|
.PHONY: build
|
|
|
|
build: pkginstall
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: test
|
2002-11-07 05:22:29 +01:00
|
|
|
.if !target(test)
|
2005-06-04 22:56:47 +02:00
|
|
|
test: build ${_TEST_COOKIE}
|
2002-11-07 05:22:29 +01:00
|
|
|
.endif
|
|
|
|
|
2005-06-04 22:56:47 +02:00
|
|
|
${_WRAPPER_COOKIE}:
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-wrapper PKG_PHASE=wrapper
|
2003-05-11 09:06:23 +02:00
|
|
|
|
2005-01-10 19:34:48 +01:00
|
|
|
PKG_ERROR_CLASSES+= configure
|
|
|
|
PKG_ERROR_MSG.configure= \
|
|
|
|
"" \
|
|
|
|
"There was an error during the \`\`configure'' phase." \
|
|
|
|
"Please investigate the following for more information:"
|
|
|
|
.if defined(GNU_CONFIGURE)
|
|
|
|
PKG_ERROR_MSG.configure+= \
|
|
|
|
" * config.log" \
|
|
|
|
" * ${WRKLOG}" \
|
|
|
|
""
|
|
|
|
.else
|
|
|
|
PKG_ERROR_MSG.configure+= \
|
|
|
|
" * log of the build" \
|
|
|
|
" * ${WRKLOG}" \
|
|
|
|
""
|
|
|
|
.endif
|
2006-01-04 05:25:47 +01:00
|
|
|
.if defined(BROKEN_IN)
|
|
|
|
PKG_ERROR_MSG.configure+= \
|
|
|
|
" * This package is broken in ${BROKEN_IN}." \
|
|
|
|
" * It may be removed in the next branch unless fixed."
|
|
|
|
.endif
|
2005-06-04 22:56:47 +02:00
|
|
|
${_CONFIGURE_COOKIE}:
|
2006-01-21 22:32:51 +01:00
|
|
|
.if !empty(INTERACTIVE_STAGE:Mconfigure) && defined(BATCH)
|
2006-06-06 00:49:44 +02:00
|
|
|
@${ERROR_MSG} "The configuration stage of this package requires user interaction"
|
|
|
|
@${ERROR_MSG} "Please configure manually with \"cd ${PKGDIR} && ${MAKE} configure\""
|
2005-06-04 22:56:47 +02:00
|
|
|
@${TOUCH} ${_INTERACTIVE_COOKIE}
|
2002-07-02 13:26:05 +02:00
|
|
|
@${FALSE}
|
|
|
|
.else
|
2005-01-10 19:34:48 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-configure PKG_PHASE=configure || ${PKG_ERROR_HANDLER.configure}
|
2002-07-02 13:26:05 +02:00
|
|
|
.endif
|
|
|
|
|
2005-01-10 19:34:48 +01:00
|
|
|
PKG_ERROR_CLASSES+= build
|
|
|
|
PKG_ERROR_MSG.build= \
|
|
|
|
"" \
|
|
|
|
"There was an error during the \`\`build'' phase." \
|
|
|
|
"Please investigate the following for more information:" \
|
|
|
|
" * log of the build" \
|
|
|
|
" * ${WRKLOG}" \
|
|
|
|
""
|
2006-01-04 05:25:47 +01:00
|
|
|
.if defined(BROKEN_IN)
|
|
|
|
PKG_ERROR_MSG.build+= \
|
|
|
|
" * This package is broken in ${BROKEN_IN}." \
|
|
|
|
" * It may be removed in the next branch unless fixed."
|
|
|
|
.endif
|
2005-06-04 22:56:47 +02:00
|
|
|
${_BUILD_COOKIE}:
|
2006-01-21 22:32:51 +01:00
|
|
|
.if !empty(INTERACTIVE_STAGE:Mbuild) && defined(BATCH)
|
2006-06-06 00:49:44 +02:00
|
|
|
@${ERROR_MSG} "The build stage of this package requires user interaction"
|
|
|
|
@${ERROR_MSG} "Please build manually with \"cd ${PKGDIR} && ${MAKE} build\""
|
2005-06-04 22:56:47 +02:00
|
|
|
@${TOUCH} ${_INTERACTIVE_COOKIE}
|
2002-07-02 13:26:05 +02:00
|
|
|
@${FALSE}
|
|
|
|
.else
|
2005-01-10 19:34:48 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-build PKG_PHASE=build || ${PKG_ERROR_HANDLER.build}
|
2002-07-02 13:26:05 +02:00
|
|
|
.endif
|
|
|
|
|
2005-06-04 22:56:47 +02:00
|
|
|
${_TEST_COOKIE}:
|
2004-02-21 13:29:23 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-test PKG_PHASE=test
|
2002-11-07 05:22:29 +01:00
|
|
|
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
.PHONY: wrapper-message
|
Move the hide-tools portion of bsd.buildlink2.mk into tools.mk, and
put the tools in ${WRKDIR}/.tools/bin instead of in ${BUILDLINK_DIR},
and remove the need for buildlink2 to use USE_GNU_TOOLS. In the
modified USE_GNU_TOOLS implementation, the following implementation-
specific variables have the following meanings:
_TOOLS_REPLACE.<tool>
means that we want ${AWK}, ${SED}, etc. symlinked into
${TOOLS_DIR} as awk, sed, etc.
_TOOLS_NEED_GNU.<tool>
means that we want to use the pkgsrc version of <tool>
symlinked info ${TOOLS_DIR} as awk, sed, etc. If this is
"YES", then it always trumps _TOOLS_REPLACE.<tool>.
And we want nothing to happen if we're building the pkgsrc GNU tool
itself. The modified USE_GNU_TOOLS implementation should also
hopefully fix the circular dependency problem.
Create a new target "tools" that is run after "patch" and before
"buildlink" that populates the ${TOOLS_DIR} directory. This ensures
that it's always run at the right time, instead of relying on
pre-buildlink or pre-configure, which may be cancelled by
NO_BUILDLINK or NO_CONFIGURE.
XXX There is some possible fallout in texinfo.mk with the MAKE_ENV and
XXX CONFIGURE_ENV settings for INSTALL_INFO and MAKEINFO. It looks
XXX like the MAKE_ENV and CONFIGURE_ENV settings should move from
XXX tools.mk into texinfo.mk, and they no longer need to be
XXX conditional on USE_BUILDLINK2. I'll leave it to the texinfo.mk
XXX dude (Hi, Stoned!).
2003-08-16 10:50:17 +02:00
|
|
|
.PHONY: configure-message build-message test-message
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
wrapper-message:
|
2006-06-06 00:49:44 +02:00
|
|
|
@${PHASE_MSG} "Creating toolchain wrappers for ${PKGNAME}"
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
configure-message:
|
2006-06-06 00:49:44 +02:00
|
|
|
@${PHASE_MSG} "Configuring for ${PKGNAME}"
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
build-message:
|
2006-06-06 00:49:44 +02:00
|
|
|
@${PHASE_MSG} "Building for ${PKGNAME}"
|
2002-11-07 05:22:29 +01:00
|
|
|
test-message:
|
2006-06-06 00:49:44 +02:00
|
|
|
@${PHASE_MSG} "Testing for ${PKGNAME}"
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
.PHONY: wrapper-cookie
|
Move the hide-tools portion of bsd.buildlink2.mk into tools.mk, and
put the tools in ${WRKDIR}/.tools/bin instead of in ${BUILDLINK_DIR},
and remove the need for buildlink2 to use USE_GNU_TOOLS. In the
modified USE_GNU_TOOLS implementation, the following implementation-
specific variables have the following meanings:
_TOOLS_REPLACE.<tool>
means that we want ${AWK}, ${SED}, etc. symlinked into
${TOOLS_DIR} as awk, sed, etc.
_TOOLS_NEED_GNU.<tool>
means that we want to use the pkgsrc version of <tool>
symlinked info ${TOOLS_DIR} as awk, sed, etc. If this is
"YES", then it always trumps _TOOLS_REPLACE.<tool>.
And we want nothing to happen if we're building the pkgsrc GNU tool
itself. The modified USE_GNU_TOOLS implementation should also
hopefully fix the circular dependency problem.
Create a new target "tools" that is run after "patch" and before
"buildlink" that populates the ${TOOLS_DIR} directory. This ensures
that it's always run at the right time, instead of relying on
pre-buildlink or pre-configure, which may be cancelled by
NO_BUILDLINK or NO_CONFIGURE.
XXX There is some possible fallout in texinfo.mk with the MAKE_ENV and
XXX CONFIGURE_ENV settings for INSTALL_INFO and MAKEINFO. It looks
XXX like the MAKE_ENV and CONFIGURE_ENV settings should move from
XXX tools.mk into texinfo.mk, and they no longer need to be
XXX conditional on USE_BUILDLINK2. I'll leave it to the texinfo.mk
XXX dude (Hi, Stoned!).
2003-08-16 10:50:17 +02:00
|
|
|
.PHONY: configure-cookie build-cookie test-cookie
|
Initial commit of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3 into
mk/wrapper. The buildlink3 code is modified to simply hook its
transformations into the wrapper script framework.
The wrapper script framework has some new features:
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* making UnixWare GCC accept -rpath options and silently converting
them into an appropriate LD_RUN_PATH
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Much improved debugging output. It's possible to output the wrapper
work log in-line with normal output by setting WRAPPER_LOG to
"stderr".
Important differences in behaviour from the old buildlink3 code include:
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
The old --fix-la syntax no longer works.
20040818
========
* Initial release of a new wrapper script framework that encapsulates
the non-buildlink-related code and moves it out of mk/buildlink3.
These features include:
* making MIPSpro accept GCC options
* making MIPSpro "ucode" accept GCC options
* making SunPro accept GCC options
* making "ld" accept -Wl,* options and silently removing the "-Wl,"
* (NEW) making UnixWare GCC accept -rpath options and silently
converting them into an appropriate LD_RUN_PATH
One major benefit of this is that the buildlink3 code is now much
tighter and easier to understand since it concerns itself solely
with buildlink-related details. I haven't yet optimized the wrapper
cache, so the new wrapper scripts may take slightly longer to execute
than the old buildlink3 wrapper scripts, but I'll be improving this
over time.
20040821
========
* Move the inclusion of $cmd_sink outside of the main loop in wrapper.sh
so that the $cmd_sink script can be used to globally scan and process
the arguments. Move the LD_RUN_PATH code to a cmd-sink-unixware-gcc
script. Garbage-collect the now unused export_vars-related code.
* Add cmd-sink-aix-xlc for AIX xlc that munges -Wl,-R* into an
appropriate -blibpath option.
* Add cmd-sink-interix-gcc and cmd-sink-interix-ld that errors out
when it sees -fpic/-fPIC and -shared/-Bshareable, respectively
(requested by <tv>).
* Move the code that converts full paths to shared libraries into the
"-Ldir -llib" equivalents from the buildlink3 code into wrapper/logic.
Remove the same from bsd.buildlink3.mk and gen-transform.sh.
* Move the code that checks for absolute rpaths from the buildlink3
code into wrapper/arg-source. Remove the same from bsd.buildlink3.mk
and gen-transform.sh.
* Only move the -l options to the end of the command line, leaving the
-L options in-place.
* Add more debugging code.
20040824
========
* Fix quoting problems after arguments are transformed. Remove the
hack that was inserted that magically made almost everything work
because we do it the right way now.
* Move the inclusion of $logic outside of the main loop in wrapper.sh
so that the $logic script doesn't have to worry about underflowing
the argument buffer.
* Encapsulate the loop in wrapper.sh that fills the argument buffer
entirely within the arg-source script.
* Move from the logic script into the arg-source script the
transformations that merge or split arguments.
* Fix bug where skipargs was effectively being ignored if it was more
than 1.
* Handle the whitespace in transformations in the logic script that
turn one library option into multiple library options, e.g.
"-lreadline" -> "-ledit -ltermcap".
* Allow you to specify an environment variable WRAPPER_SKIP_TRANSFORM
for whether you wish to skip the transformation step in the logic
script. This is intended for testing purposes.
* Added check_prog() and init_lib() functions to the shell code library
to make it more reusable outside of the wrapper framework.
* Allow the msg_log() function to output to "stdout" or "stderr". If
you want to have all of the logging appear on the screen, then you
can now set WRAPPER_LOG=stderr.
* Make some of the script components not overridable on a per-wrapper
basis.
* Add a gen-transform.sh script that generates transformation sedfiles.
The "transform" script is used to transform arguments, while the
"untransform" script is used to unwrap files. Move the no-rpath
logic from buildlink3/gen-transform.sh into wrapper/gen-transform.sh
since it's not buildlink3-specific.
* Check for a non-empty blibpath before adding the option in
cmd-sink-aix-xlc.
* Extend the autodetection of the libtool mode to detect "compile" and
"uninstall".
* Add a cmd-sink-libtool script that doesn't pass linker options to
libtool unless we're in "link" mode.
* Set _USE_RPATH to "yes" for UnixWare so that the wrappers will see the
rpath options and convert them to a LD_RUN_PATH definition.
* Add more debugging code.
20040826
========
* Rewrite buildlink3/gen-transform.sh to produce more precise sed commands.
Drop some unused commands from the mini-language, and add a few more
that are more restrictive in their scope.
* Fix problem where repeated options weren't properly handled by some
of sed commands. It's not enough that they're "global replace",
since some patterns match separator characters before and after each
option. We must repeat those patterns twice to catch all instances
correctly.
* Fix problem noted in both PR pkg/24760 and PR pkg/25500, where
-L/usr/lib/* was being mangled improperly.
* Remove the top-level "buildlink" target; instead, make buildlinking
occur as part of the "wrapper" target.
* Add more debugging code.
20040828
========
* Added a head_queue function to shell-lib that returns the head of the
named queue without popping it off the front of the queue.
* Strip consecutive, repeated library options from the command line when
we read it in the logic script.
* Be more careful about not underflowing the argument buffer.
20040906
========
* shell-lib was moved into pkgsrc/mk/scripts; correct references to that
file in the wrapper code.
* Use opt-sub instead of sub-mangle when protecting -I/usr/include/*
and -L/usr/lib/* from buildlink transformations. This avoids adding
lines that look like "-I-I..." in the transformation sedfiles.
* mangle and sub-mangle are only meant to transform directories in
-I, -L, and rpath options, so remove the lines in
buildlink3/gen-transform.sh that transformed bare directories.
* Fix bug in strip-slashdot where the "." wasn't backquoted and thus
matched all characters instead of only the "." character.
* Change the libtool wrapper to use a modified buildcmd script that
doesn't rearrange any of the arguments. This should fix spurious
problems where libtool doesn't understand how to parse the command
line when the -l options are moved to the end of the argument list.
* Fix bug in the logic script where the $cachearg and $cachedarg
weren't being properly set at all times, which caused the cache to
contain the wrong transformed argument.
20040907
========
* Support automatically passing "ABI" flags to the compiler and linker
depending on the value of ${ABI}. Currently supports the SunPro
compiler with ${ABI} == 64 and the MIPSPro compiler with ${ABI} as
any of 32, n32, o32, and 64.
* Move back the code that splits absolute paths to shared libraries
from arg-source back into logic. This allows us to correctly skip
splitting those paths based on the previous option. Also add a
sanity check that the library name in the split argument doesn't
contain a "/" since shell globs are not as precise as REs.
* Don't transform the path given after --dynamic-linker (used by GNU
ld for ELF linkage).
* Add the ability for the libtool wrapper to be called just to unwrap
an existing libtool archive by running:
libtool --mode=unwrap -o libfoo.la
20040914
========
* Add a loop in libtool-fix-la to ensure that all of the options listed
in the dependency_libs lines of *.lai files are processed. This fixes
a buildlink3 leakage bug.
* Merge the gen-transform.sh scripts between buildlink3 and wrapper and
place them all in wrapper. This makes sense since the commands simply
allow for many types of transformations, which buildlink3 takes
advantage of, but there is nothing inherently buildlink-ish about
those commands.
* Don't directly manipulate SUBST_SED.unwrap. Instead, create the
value of SUBST_SED.unwrap by combining several other variables
(currently just _UNWRAP_SED) to ensure that the correct ordering is
preserved.
* Correct some confusing debugging messages.
2004-09-21 17:01:38 +02:00
|
|
|
wrapper-cookie:
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${_WRAPPER_COOKIE}
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
configure-cookie:
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${_CONFIGURE_COOKIE}
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
build-cookie:
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${_BUILD_COOKIE}
|
2002-11-07 05:22:29 +01:00
|
|
|
test-cookie:
|
2005-06-04 22:56:47 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${_TEST_COOKIE}
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
.ORDER: wrapper-message wrapper-vars pre-wrapper do-wrapper post-wrapper wrapper-cookie
|
|
|
|
.ORDER: configure-message configure-vars pre-configure pre-configure-override do-configure post-configure configure-cookie
|
|
|
|
.ORDER: build-message build-vars pre-build do-build post-build build-cookie
|
2002-11-07 05:22:29 +01:00
|
|
|
.ORDER: test-message pre-test do-test post-test test-cookie
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
|
|
|
|
# Please note that the order of the following targets is important, and
|
|
|
|
# should not be modified (.ORDER is not recognised by make(1) in a serial
|
|
|
|
# make i.e. without -j n)
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
.PHONY: real-wrapper
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
.PHONY: real-configure real-build real-test
|
2006-06-09 15:59:06 +02:00
|
|
|
real-wrapper: wrapper-message wrapper-vars pre-wrapper do-wrapper post-wrapper wrapper-cookie error-check
|
|
|
|
real-configure: configure-message configure-vars pre-configure pre-configure-override do-configure post-configure configure-cookie error-check
|
|
|
|
real-build: build-message build-vars pre-build do-build post-build build-cookie error-check
|
|
|
|
real-test: test-message pre-test do-test post-test test-cookie error-check
|
1997-08-20 12:21:05 +02:00
|
|
|
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
# su-target is a macro target that does just-in-time su-to-root before
|
2006-06-04 02:39:05 +02:00
|
|
|
# reinvoking the make process as root. It acquires root privileges and
|
|
|
|
# invokes a new make process with the target named "su-${.TARGET}".
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
#
|
|
|
|
.PHONY: su-target
|
|
|
|
su-target: .USE
|
2006-06-05 03:42:58 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}set -e; \
|
2006-06-04 02:39:05 +02:00
|
|
|
case ${PRE_CMD.su-${.TARGET}:Q}"" in \
|
|
|
|
"") ;; \
|
|
|
|
*) ${PRE_CMD.su-${.TARGET}} ;; \
|
|
|
|
esac; \
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
if ${TEST} `${ID} -u` = `${ID} -u ${ROOT_USER}`; then \
|
|
|
|
${MAKE} ${MAKEFLAGS} PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL:Q} su-${.TARGET} ${MAKEFLAGS.${.TARGET}}; \
|
|
|
|
else \
|
|
|
|
case ${PRE_ROOT_CMD:Q}"" in \
|
|
|
|
${TRUE:Q}"") ;; \
|
2006-06-06 00:49:44 +02:00
|
|
|
*) ${WARNING_MSG} "Running: "${PRE_ROOT_CMD:Q} ;; \
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
esac; \
|
|
|
|
${PRE_ROOT_CMD}; \
|
2006-06-08 10:01:53 +02:00
|
|
|
${STEP_MSG} "Becoming \`\`${ROOT_USER}'' to make su-${.TARGET} (`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'`)"; \
|
2006-06-05 03:42:58 +02:00
|
|
|
${SU_CMD} "cd ${.CURDIR}; ${SETENV} PATH='$${PATH}:${SU_CMD_PATH_APPEND}' ${MAKE} ${MAKEFLAGS} PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL} su-${.TARGET} ${MAKEFLAGS.su-${.TARGET}}"; \
|
2006-06-08 10:01:53 +02:00
|
|
|
${STEP_MSG} "Dropping \`\`${ROOT_USER}'' privileges."; \
|
First pass at implementing support for package system flavors other
than pkgsrc's current one. This is an important lead-up to any project
that redesigns the pkg_* tools in that it doesn't tie us to past design
(mis)choices. This commit mostly deals with rearranging code, although
there was a considerable amount of rewriting done in cases where I
thought the code was somewhat messy and was difficult to understand.
The design I chose for supporting multiple package system flavors is
that the various depends, install, package, etc. modules would define
default targets and variables that may be overridden in files from
pkgsrc/mk/flavor/${PKG_FLAVOR}. The default targets would do the
sensible thing of doing nothing, and pkgsrc infrastructure would rely
on the appropriate things to be defined in pkgsrc/mk/flavor to do the
real work. The pkgsrc/mk/flavor directory contains subdirectories
corresponding to each package system flavor that we support. Currently,
I only have "pkg" which represents the current pkgsrc-native package
flavor. I've separated out most of the code where we make assumptions
about the package system flavor, mostly either because we directly
use the pkg_* tools, or we make assumptions about the package meta-data
directory, or we directly manipulate the package meta-data files, and
placed it into pkgsrc/mk/flavor/pkg.
There are several new modules that have been refactored out of bsd.pkg.mk
as part of these changes: check, depends, install, package, and update.
Each of these modules has been slimmed down by rewriting them to avoid
some recursive make calls. I've also religiously documented which
targets are "public" and which are "private" so that users won't rely
on reaching into pkgsrc innards to call a private target.
The "depends" module is a complete overhaul of the way that we handle
dependencies. There is now a separate "depends" phase that occurs
before the "extract" phase where dependencies are installed. This
differs from the old way where dependencies were installed just before
extraction occurred. The reduce-depends.mk file is now replaced by
a script that is invoked only once during the depends phase and is
used to generate a cookie file that holds the full set of reduced
dependencies. It is now possible to type "make depends" in a package
directory and all missing dependencies will be installed.
Future work on this project include:
* Resolve the workflow design in anticipation of future work on
staged installations where "package" conceptually happens before
"install".
* Rewrite the buildlink3 framework to not assume the use of the
pkgsrc pkg_* tools.
* Rewrite the pkginstall framework to provide a standard pkg_*
tool to perform the actions, and allowing a purely declarative
file per package to describe what actions need to be taken at
install or deinstall time.
* Implement support for the SVR4 package flavor. This will be
proof that the appropriate abstractions are in place to allow
using a completely different set of package management tools.
2006-06-04 01:11:42 +02:00
|
|
|
fi
|
Add two new EXPERIMENTAL targets:
replace - this target updates a package in place, fixing up references
to and from other packages to the updated package.
undo-replace - undoes all the work of the previous replace operation.
For this target to work, the ${WRKDIR} must be preserved.
The replace target first makes a binary package of the existing
installed package, then a copy of the +REQUIRED_BY file is taken, if
it exists, and then the existing package is deleted. The new package
is installed, and the preserved +REQUIRED_BY file is copied back into
place, using its contents to modify the +CONTENTS files of all the
packages which require it. The undo-replace shares code with the
replace target, and does the same operation, but in reverse.
Warnings are displayed when either of these targets is used, since
they are experimental targets right now.
2002-03-04 12:56:54 +01:00
|
|
|
|
Following on from the removal of the automatic "is there a script to run" logic,
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
2001-11-08 10:29:56 +01:00
|
|
|
# Empty pre-* and post-* targets
|
1997-08-20 12:21:05 +02:00
|
|
|
|
Separate out the part of bsd.tools.mk that actually created the tools
into a new file pkgsrc/mk/tools/create.mk. This leaves bsd.tools.mk
as a file that pulls in all of the other ones. Also move the
tools-related targets from bsd.pkg.mk into bsd.tools.mk.
The tools cookie file has been removed, as well as hooks for
{pre,do,post}-tools. Instead, there is now only a single public target
"tools" which may be invoked. Invoking "tools" will always cause all
of the tools in ${TOOLS_DIR} to be created.
The "tools" step has been moved and is now just after the "depends"
step and before sources are extracted. This is the earliest place
where the "tools" step can be taken, and it allows the created tools
to be used in all steps/phases after it, starting with "extract". As
a consequence, we should just invoke tools by their bare names in
targets, e.g. awk, sed, patch, etc., instead of with the ${VARIABLE}
names, e.g. ${AWK}, ${SED}, ${PATCH}, etc.
2006-06-06 08:30:29 +02:00
|
|
|
.for name in wrapper configure build test
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-07-19 00:43:32 +02:00
|
|
|
. if !target(pre-${name})
|
1997-08-20 12:21:05 +02:00
|
|
|
pre-${name}:
|
|
|
|
@${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-07-19 00:43:32 +02:00
|
|
|
. if !target(post-${name})
|
1997-08-20 12:21:05 +02:00
|
|
|
post-${name}:
|
|
|
|
@${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
################################################################
|
|
|
|
# Some more targets supplied for users' convenience
|
|
|
|
################################################################
|
|
|
|
|
2000-12-30 12:19:04 +01:00
|
|
|
# Run pkglint:
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: lint
|
2000-12-30 12:19:04 +01:00
|
|
|
lint:
|
2005-06-27 18:25:43 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint
|
2001-07-10 13:51:57 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
# Checksumming utilities
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: makesum
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(makesum)
|
2005-12-01 12:18:30 +01:00
|
|
|
. if defined(NO_CHECKSUM) && !empty(NO_CHECKSUM:M[Yy][Ee][Ss])
|
|
|
|
makesum:
|
|
|
|
@${DO_NADA}
|
|
|
|
. else
|
2001-03-06 15:50:45 +01:00
|
|
|
makesum: fetch uptodate-digest
|
2001-04-17 11:07:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
newfile=${DISTINFO_FILE}.$$$$; \
|
2001-04-21 14:40:58 +02:00
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
2002-07-02 15:31:40 +02:00
|
|
|
${GREP} '^.NetBSD' ${DISTINFO_FILE} > $$newfile || \
|
2004-04-07 16:26:50 +02:00
|
|
|
(${ECHO_N} "$$" > $$newfile && \
|
|
|
|
${ECHO_N} "NetBSD" >> $$newfile && \
|
2002-07-02 15:31:40 +02:00
|
|
|
${ECHO} "$$" >> $$newfile) \
|
2001-04-21 14:40:58 +02:00
|
|
|
else \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "$$" > $$newfile; \
|
|
|
|
${ECHO_N} "NetBSD" >> $$newfile; \
|
2001-04-17 11:07:01 +02:00
|
|
|
${ECHO} "$$" >> $$newfile; \
|
2001-04-21 14:40:58 +02:00
|
|
|
fi; \
|
|
|
|
${ECHO} "" >> $$newfile; \
|
2001-04-17 11:07:01 +02:00
|
|
|
cd ${DISTDIR}; \
|
1999-03-08 18:26:54 +01:00
|
|
|
for sumfile in "" ${_CKSUMFILES}; do \
|
2000-05-11 10:14:35 +02:00
|
|
|
if [ "X$$sumfile" = "X" ]; then continue; fi; \
|
2005-02-22 22:01:10 +01:00
|
|
|
for a in "" ${DIGEST_ALGORITHMS}; do \
|
|
|
|
if [ "X$$a" = "X" ]; then continue; fi; \
|
|
|
|
${DIGEST} $$a $$sumfile >> $$newfile; \
|
|
|
|
done; \
|
2001-06-12 15:17:01 +02:00
|
|
|
${WC} -c $$sumfile | ${AWK} '{ print "Size (" $$2 ") = " $$1 " bytes" }' >> $$newfile; \
|
2001-04-17 11:07:01 +02:00
|
|
|
done; \
|
1999-03-08 18:26:54 +01:00
|
|
|
for ignore in "" ${_IGNOREFILES}; do \
|
2000-05-11 10:14:35 +02:00
|
|
|
if [ "X$$ignore" = "X" ]; then continue; fi; \
|
2005-02-22 22:01:10 +01:00
|
|
|
for a in "" ${DIGEST_ALGORITHMS}; do \
|
|
|
|
if [ "X$$a" = "X" ]; then continue; fi; \
|
|
|
|
${ECHO} "$$a ($$ignore) = IGNORE" >> $$newfile; \
|
|
|
|
done; \
|
2001-04-17 11:07:01 +02:00
|
|
|
done; \
|
2001-06-09 14:15:59 +02:00
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
|
|
|
${AWK} '$$2 ~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
|
2001-04-17 11:07:01 +02:00
|
|
|
fi; \
|
2001-07-13 08:16:02 +02:00
|
|
|
if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
|
2001-04-21 14:40:58 +02:00
|
|
|
${RM} -f $$newfile; \
|
2001-04-23 22:53:50 +02:00
|
|
|
${ECHO_MSG} "=> distinfo: distfiles part unchanged."; \
|
2001-04-21 14:40:58 +02:00
|
|
|
else \
|
|
|
|
${MV} $$newfile ${DISTINFO_FILE}; \
|
|
|
|
fi
|
2005-12-01 12:18:30 +01:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1999-07-09 15:14:21 +02:00
|
|
|
.if !target(makepatchsum)
|
2001-03-06 15:50:45 +01:00
|
|
|
makepatchsum mps: uptodate-digest
|
1999-10-14 07:31:22 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2001-04-17 11:07:01 +02:00
|
|
|
newfile=${DISTINFO_FILE}.$$$$; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
2001-06-09 14:15:59 +02:00
|
|
|
${AWK} '$$2 !~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
|
2001-06-09 14:56:21 +02:00
|
|
|
else \
|
2005-10-07 18:57:14 +02:00
|
|
|
${ECHO} "\$$""NetBSD""\$$" > $$newfile; \
|
2002-07-02 15:31:40 +02:00
|
|
|
${ECHO} "" >> $$newfile; \
|
1999-10-14 07:31:22 +02:00
|
|
|
fi; \
|
1999-07-09 15:14:21 +02:00
|
|
|
if [ -d ${PATCHDIR} ]; then \
|
2001-04-17 11:07:01 +02:00
|
|
|
(cd ${PATCHDIR}; \
|
1999-07-09 15:14:21 +02:00
|
|
|
for sumfile in "" patch-*; do \
|
|
|
|
case $$sumfile in \
|
2005-10-07 18:57:14 +02:00
|
|
|
"" | "patch-*") ;; \
|
|
|
|
patch-local-* | *.orig | *.rej | *~) ;; \
|
2005-02-22 22:01:10 +01:00
|
|
|
*) ${ECHO} "${PATCH_DIGEST_ALGORITHM} ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${DIGEST} ${PATCH_DIGEST_ALGORITHM}`" >> $$newfile;; \
|
1999-07-09 15:14:21 +02:00
|
|
|
esac; \
|
2001-04-17 11:07:01 +02:00
|
|
|
done); \
|
1999-10-14 07:31:22 +02:00
|
|
|
fi; \
|
2001-07-13 08:16:02 +02:00
|
|
|
if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
|
2001-04-21 14:40:58 +02:00
|
|
|
${RM} -f $$newfile; \
|
2001-04-23 22:53:50 +02:00
|
|
|
${ECHO_MSG} "=> distinfo: patches part unchanged."; \
|
2001-04-21 14:40:58 +02:00
|
|
|
else \
|
|
|
|
${MV} $$newfile ${DISTINFO_FILE}; \
|
|
|
|
fi
|
2001-04-17 11:07:01 +02:00
|
|
|
.endif
|
|
|
|
|
2001-06-09 14:15:59 +02:00
|
|
|
# This target is done by invoking a sub-make so that DISTINFO_FILE gets
|
2001-04-17 11:07:01 +02:00
|
|
|
# re-evaluated after the "makepatchsum" target is made. This can be
|
|
|
|
# made into:
|
|
|
|
#makedistinfo mdi: makepatchsum makesum
|
|
|
|
# once a combined distinfo file exists for all packages
|
|
|
|
.if !target(makedistinfo)
|
|
|
|
makedistinfo mdi distinfo: makepatchsum
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} makesum
|
1999-07-09 15:14:21 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: checksum
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(checksum)
|
2001-03-06 15:50:45 +01:00
|
|
|
checksum: fetch uptodate-digest
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2001-06-09 14:15:59 +02:00
|
|
|
if [ ! -f ${DISTINFO_FILE} ]; then \
|
2001-03-06 15:50:45 +01:00
|
|
|
${ECHO_MSG} "=> No checksum file."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2005-02-25 14:05:52 +01:00
|
|
|
(cd ${DISTDIR}; OK="true"; missing=""; \
|
1999-03-08 18:26:54 +01:00
|
|
|
for file in "" ${_CKSUMFILES}; do \
|
|
|
|
if [ "X$$file" = X"" ]; then continue; fi; \
|
2005-02-25 14:05:52 +01:00
|
|
|
filesummed=false; \
|
|
|
|
for a in ${DIGEST_ALGORITHMS}; do \
|
2005-04-16 11:26:22 +02:00
|
|
|
CKSUM2=`${AWK} 'NF == 4 && $$1 == "'$$a'" && $$2 == "('$$file')" && $$3 == "=" {print $$4; exit}' ${DISTINFO_FILE}`; \
|
2005-02-25 14:05:52 +01:00
|
|
|
case "$${CKSUM2}" in \
|
|
|
|
"") ${ECHO_MSG} "=> No $$a checksum recorded for $$file."; \
|
|
|
|
;; \
|
|
|
|
*) filesummed=true; \
|
2005-02-22 22:01:10 +01:00
|
|
|
CKSUM=`${DIGEST} $$a < $$file`; \
|
|
|
|
if [ "$$CKSUM2" = "IGNORE" ]; then \
|
|
|
|
${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in checksum file even though"; \
|
|
|
|
${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \
|
|
|
|
OK="false"; \
|
|
|
|
elif [ "$$CKSUM" = "$$CKSUM2" ]; then \
|
|
|
|
${ECHO_MSG} "=> Checksum $$a OK for $$file."; \
|
|
|
|
else \
|
|
|
|
${ECHO_MSG} "=> Checksum $$a mismatch for $$file."; \
|
|
|
|
OK="false"; \
|
2005-02-25 14:05:52 +01:00
|
|
|
fi ;; \
|
|
|
|
esac; \
|
2005-02-22 22:01:10 +01:00
|
|
|
done; \
|
2005-02-25 14:05:52 +01:00
|
|
|
case "$$filesummed" in \
|
|
|
|
false) missing="$$missing $$file"; \
|
|
|
|
OK=false ;; \
|
|
|
|
esac; \
|
1999-03-08 18:26:54 +01:00
|
|
|
done; \
|
|
|
|
for file in "" ${_IGNOREFILES}; do \
|
|
|
|
if [ "X$$file" = X"" ]; then continue; fi; \
|
2005-04-16 11:26:22 +02:00
|
|
|
CKSUM2=`${AWK} 'NF == 4 && $$3 == "=" && $$2 == "('$$file')"{print $$4; exit}' ${DISTINFO_FILE}`; \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ "$$CKSUM2" = "" ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
OK="false"; \
|
|
|
|
elif [ "$$CKSUM2" != "IGNORE" ]; then \
|
2001-03-06 15:50:45 +01:00
|
|
|
${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in checksum file even though"; \
|
1997-08-20 12:21:05 +02:00
|
|
|
${ECHO_MSG} " the file is in the "'$$'"{IGNOREFILES} list."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
OK="false"; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
if [ "$$OK" != "true" ]; then \
|
2005-02-25 14:05:52 +01:00
|
|
|
case "$$missing" in \
|
|
|
|
"") ;; \
|
|
|
|
*) ${ECHO_MSG} "Missing checksums for $$missing";; \
|
|
|
|
esac; \
|
2001-06-09 14:15:59 +02:00
|
|
|
${ECHO_MSG} "Make sure the Makefile and checksum file (${DISTINFO_FILE})"; \
|
1997-08-20 12:21:05 +02:00
|
|
|
${ECHO_MSG} "are up to date. If you want to override this check, type"; \
|
1998-04-19 14:48:07 +02:00
|
|
|
${ECHO_MSG} "\"${MAKE} NO_CHECKSUM=yes [other args]\"."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
exit 1; \
|
|
|
|
fi) ; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
|
|
|
.endif
|
|
|
|
|
2000-07-06 18:45:21 +02:00
|
|
|
|
2001-05-20 03:58:19 +02:00
|
|
|
|
|
|
|
# List of sites carrying binary pkgs. Variables "rel" and "arch" are
|
|
|
|
# replaced with OS release ("1.5", ...) and architecture ("mipsel", ...)
|
2002-11-10 19:20:44 +01:00
|
|
|
BINPKG_SITES?= \
|
2004-02-25 10:24:52 +01:00
|
|
|
ftp://ftp.NetBSD.org/pub/NetBSD/packages/$${rel}/$${arch}
|
2001-05-20 03:58:19 +02:00
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
# List of flags to pass to pkg_add(1) for bin-install:
|
|
|
|
|
2001-05-20 03:58:19 +02:00
|
|
|
BIN_INSTALL_FLAGS?= # -v
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
2003-09-08 03:06:01 +02:00
|
|
|
PKG_ARGS_ADD= -W ${LOCALBASE} -w ${DEFAULT_VIEW}
|
2003-09-02 08:59:37 +02:00
|
|
|
.endif
|
|
|
|
_BIN_INSTALL_FLAGS= ${BIN_INSTALL_FLAGS}
|
2005-12-31 08:53:11 +01:00
|
|
|
.if defined(_AUTOMATIC) && !empty(_AUTOMATIC:MYES)
|
|
|
|
_BIN_INSTALL_FLAGS+= -A
|
2005-11-05 14:31:43 +01:00
|
|
|
.endif
|
2003-09-02 08:59:37 +02:00
|
|
|
_BIN_INSTALL_FLAGS+= ${PKG_ARGS_ADD}
|
2001-05-20 03:58:19 +02:00
|
|
|
|
2006-01-03 18:26:56 +01:00
|
|
|
_SHORT_UNAME_R= ${:!${UNAME} -r!:C@\.([0-9]*)[_.].*@.\1@} # n.n[_.]anything => n.n
|
|
|
|
|
2000-07-06 18:45:21 +02:00
|
|
|
# Install binary pkg, without strict uptodate-check first
|
2006-06-04 02:39:05 +02:00
|
|
|
.PHONY: su-bin-install
|
|
|
|
su-bin-install:
|
2003-09-13 07:55:14 +02:00
|
|
|
@found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
|
2001-05-20 03:58:19 +02:00
|
|
|
if [ "$$found" != "" ]; then \
|
2006-06-06 00:49:44 +02:00
|
|
|
${ERROR_MSG} "$$found is already installed - perhaps an older version?"; \
|
|
|
|
${ERROR_MSG} "If so, you may wish to \`\`pkg_delete $$found'' and install"; \
|
|
|
|
${ERROR_MSG} "this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \
|
2001-05-20 03:58:19 +02:00
|
|
|
exit 1; \
|
|
|
|
fi
|
2006-01-03 18:26:56 +01:00
|
|
|
@rel=${_SHORT_UNAME_R:Q} ; \
|
|
|
|
arch=${MACHINE_ARCH:Q} ; \
|
|
|
|
pkgpath=${PKGREPOSITORY:Q} ; \
|
|
|
|
for i in ${BINPKG_SITES} ; do pkgpath="$$pkgpath;$$i/All" ; done ; \
|
|
|
|
${ECHO} "Trying $$pkgpath" ; \
|
|
|
|
if ${SETENV} PKG_PATH="$$pkgpath" ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGNAME_REQD:U${PKGNAME}:Q}${PKG_SUFX} ; then \
|
|
|
|
${ECHO} "`${PKG_INFO} -e ${PKGNAME_REQD:U${PKGNAME}:Q}` successfully installed."; \
|
|
|
|
else \
|
|
|
|
${SHCOMMENT} Cycle through some FTP server here ;\
|
|
|
|
${ECHO_MSG} "Installing from source" ; \
|
|
|
|
${MAKE} ${MAKEFLAGS} package \
|
|
|
|
DEPENDS_TARGET=${DEPENDS_TARGET:Q} && \
|
|
|
|
${MAKE} ${MAKEFLAGS} clean ; \
|
2000-07-06 18:45:21 +02:00
|
|
|
fi
|
|
|
|
|
2003-10-18 14:29:26 +02:00
|
|
|
.PHONY: bin-install
|
2006-06-04 02:39:05 +02:00
|
|
|
bin-install: su-target
|
2006-06-06 00:49:44 +02:00
|
|
|
@${PHASE_MSG} "Binary install for "${PKGNAME_REQD:U${PKGNAME}:Q}
|
2003-10-18 14:29:26 +02:00
|
|
|
|
2000-07-06 18:45:21 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
# The special package-building targets
|
|
|
|
# You probably won't need to touch these
|
|
|
|
################################################################
|
|
|
|
|
2001-01-21 23:41:03 +01:00
|
|
|
# Set to "html" by the README.html target to generate HTML code,
|
|
|
|
# or to "svr4" to print SVR4 (Solaris, ...) short package names, from
|
|
|
|
# SVR4_PKGNAME variable.
|
|
|
|
# This variable is passed down via build-depends-list and run-depends-list
|
1998-08-27 16:56:02 +02:00
|
|
|
PACKAGE_NAME_TYPE?= name
|
1998-02-20 23:06:18 +01:00
|
|
|
|
2005-10-07 19:39:28 +02:00
|
|
|
_HTML_PKGNAME= ${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}
|
|
|
|
_HTML_PKGPATH= ${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}
|
|
|
|
_HTML_PKGLINK= <a href="../../${_HTML_PKGPATH}/README.html">${_HTML_PKGNAME}</a>
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: package-name
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(package-name)
|
|
|
|
package-name:
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (${PACKAGE_NAME_TYPE} == "html")
|
2005-10-07 19:39:28 +02:00
|
|
|
@${ECHO} ${_HTML_PKGLINK:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. elif (${PACKAGE_NAME_TYPE} == "svr4")
|
2001-01-21 23:41:03 +01:00
|
|
|
@${ECHO} ${SVR4_PKGNAME}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-06-03 15:36:13 +02:00
|
|
|
@${ECHO} ${PKGNAME}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # PACKAGE_NAME_TYPE
|
1998-02-20 23:06:18 +01:00
|
|
|
.endif # !target(package-name)
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: make-readme-html-help
|
2001-02-16 14:06:17 +01:00
|
|
|
.if !target(make-readme-html-help)
|
|
|
|
make-readme-html-help:
|
2001-02-21 16:01:29 +01:00
|
|
|
@${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</a>: <TD>'${COMMENT:S/&/\&/g:S/>/\>/g:S/</\</g:Q}
|
2001-02-16 14:06:17 +01:00
|
|
|
.endif # !target(make-readme-html-help)
|
|
|
|
|
2006-04-10 06:47:30 +02:00
|
|
|
# Show (non-recursively) all the packages this package depends on.
|
Change print-depends to look into /var/db/pkg, instead of pkgsrc
(implements $PACKAGE_DEPENDS_QUICK)
--
Thomas Klausner hinted me at some interresting problem WRT the
print-depends package. If something depends on suse_linus-6.*, that
package will register whatever suse_linux there is right now on the system
(in his case V6.1). What print-depends then does is also dig out any pkgs
required for suse_linux, based on what's in pkgsrc, which is of course
_wrong_, as this most likely doesn't match the installed version.[*] The
right thing instead is to print whatever the (currently installed)
suse_linux package depends on, which can be read from "pkg_info -qf"
output, looking at the @pkgdep lines.
Of course this only works if the pkg is actually installed, so it cannot
be used for README.html generation etc., but that's bad luck.
One positive aspect of using the @pkgdep list instead of going down
recursively is that this saves some time and processes. On my P133 it's
going down from ~11s to 0.5s for the pkgsrc/x11/kde package. During a
"make package" of kde itself (not counting the depending pkgs) this will
cut down like 20s (once for the fake-pkg target, and another one for the
pkg_create args - maybe a 3rd time for pkg_create in fake-pkg, but I don't
want to check that right now).
Anyways, a general solution would be to use the "pkg_info -qf | grep
@pkgdep" in print-depends instead of recursion (only!) in the places that
we know that the depends are installed. Which is the PKG_ARGS assignment
(for pkg_create) and the fake-pkg target.
[*] Plus it may be questioned that we should not go down recursively
for pkg depends anyways, but this is used in too many subtle ways
throughout the system to change.
2000-03-09 15:05:26 +01:00
|
|
|
# If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible)
|
2000-02-02 17:28:55 +01:00
|
|
|
PACKAGE_DEPENDS_WITH_PATTERNS?=true
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: run-depends-list
|
2000-08-01 04:51:34 +02:00
|
|
|
.if !target(run-depends-list)
|
|
|
|
run-depends-list:
|
2001-07-19 00:43:32 +02:00
|
|
|
. for dep in ${DEPENDS}
|
2001-05-24 15:28:36 +02:00
|
|
|
@pkg="${dep:C/:.*//}"; \
|
Speedups!
Major changes:
* Avoid a big bunch of subshells/forks/execs by using make(1) features;
should be good for some minor speedups.
* Use shell builtins for echo, true, false, test. Using full paths here
causes fork&execs, making things slow. Only changed for NetBSD.
* Rename all references to ${.MAKEFLAGS} to ${MAKEFLAGS}. See make(1).
* Evaluate all !=s only once, and add them to MAKEFLAGS
* Pass ${MAKEFLAGS} to ALL ${MAKE} calls
Now PKGTOOLS_VERSION is really only set once in a whole "make package"
cycle, even across dependencies.
Minor changes:
* SORTED_MASTER_SITES was renamed SORTED_MASTER_SITES_CMD and is now
(only) execuded in the places where it's needed.
* Don't check for /usr/bin/fetch - we never had it, and if someone
depends on it he can set FETCH_CMD instead.
* Don't fall back to README.port
* Replace some commands by their uppercase equivalents (sed -> ${SED},
same for grep, awk, ...)
* Some whitespace changes to improve readability
=> With these changes, times for a "make clean" in x11/kde go down to 20%,
time for "make readme" goes down to 33%!
2000-06-03 09:15:28 +02:00
|
|
|
dir="${dep:C/[^:]*://}"; \
|
2000-06-04 02:50:48 +02:00
|
|
|
cd ${.CURDIR}; \
|
2000-06-24 01:41:43 +02:00
|
|
|
if ${PACKAGE_DEPENDS_WITH_PATTERNS}; then \
|
|
|
|
${ECHO} "$$pkg"; \
|
|
|
|
else \
|
|
|
|
if cd $$dir 2>/dev/null; then \
|
2000-06-03 18:52:32 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}; \
|
2000-05-31 18:59:44 +02:00
|
|
|
else \
|
2000-06-24 01:41:43 +02:00
|
|
|
${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
|
|
|
|
fi; \
|
2000-06-03 18:52:32 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor
|
2000-08-01 04:51:34 +02:00
|
|
|
.endif # target(run-depends-list)
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: build-depends-list
|
2000-08-01 04:51:34 +02:00
|
|
|
.if !target(build-depends-list)
|
|
|
|
build-depends-list:
|
2002-03-02 17:09:14 +01:00
|
|
|
@for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs-excl`; \
|
|
|
|
do \
|
|
|
|
(cd ../../$$dir && \
|
|
|
|
${MAKE} ${MAKEFLAGS} package-name) \
|
|
|
|
done
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1998-09-23 15:09:32 +02:00
|
|
|
# If PACKAGES is set to the default (../../pkgsrc/packages), the current
|
|
|
|
# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
|
|
|
|
# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
|
|
|
|
# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
|
|
|
|
# the target used to generate the README.html file.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: binpkg-list
|
1998-05-25 02:04:30 +02:00
|
|
|
.if !target(binpkg-list)
|
|
|
|
binpkg-list:
|
2004-07-03 23:59:04 +02:00
|
|
|
@if ${TEST} -d ${PACKAGES}; then \
|
2001-05-03 15:01:04 +02:00
|
|
|
cd ${PACKAGES}; \
|
|
|
|
case ${.CURDIR} in \
|
|
|
|
*/pkgsrc/packages) \
|
|
|
|
for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \
|
|
|
|
do \
|
|
|
|
if [ -f "$$pkg" ] ; then \
|
|
|
|
pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \
|
|
|
|
${ECHO} "<TR><TD>${MACHINE_ARCH}:<TD><a href=\"${PKG_URL}/$$pkg\">$$pkgname</a><TD>(${OPSYS} ${OS_VERSION})"; \
|
|
|
|
fi ; \
|
|
|
|
done ; \
|
|
|
|
;; \
|
|
|
|
*) \
|
|
|
|
cd ${PACKAGES}/../..; \
|
|
|
|
for i in [1-9].*/*; do \
|
|
|
|
if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \
|
|
|
|
for j in ${PKGWILDCARD}${PKG_SUFX}; \
|
|
|
|
do \
|
|
|
|
if [ -f "$$j" ]; then \
|
|
|
|
${ECHO} $$i/$$j;\
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
|
|
|
done | ${AWK} -F/ ' \
|
|
|
|
{ \
|
|
|
|
release = $$1; \
|
|
|
|
arch = $$2; \
|
|
|
|
pkg = $$3; \
|
2003-12-13 01:34:39 +01:00
|
|
|
gsub("\\.tgz","", pkg); \
|
2001-05-03 15:01:04 +02:00
|
|
|
if (arch != "m68k" && arch != "mipsel") { \
|
|
|
|
if (arch in urls) \
|
|
|
|
urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a>, " urls[arch]; \
|
|
|
|
else \
|
|
|
|
urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a> "; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
END { \
|
|
|
|
for (av in urls) { \
|
|
|
|
split(av, ava, "/"); \
|
|
|
|
arch=ava[1]; \
|
|
|
|
pkg=ava[2]; \
|
|
|
|
release=ava[3]; \
|
|
|
|
print "<TR><TD>" arch ":<TD>" urls[av] "<TD>(${OPSYS} " release ")"; \
|
|
|
|
} \
|
2001-06-12 15:17:01 +02:00
|
|
|
}' | ${SORT} \
|
2001-05-03 15:01:04 +02:00
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
fi
|
1998-05-25 02:04:30 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
# Everything after here are internal targets and really
|
|
|
|
# shouldn't be touched by anybody but the release engineers.
|
|
|
|
################################################################
|
|
|
|
|
|
|
|
# This target generates an index entry suitable for aggregation into
|
|
|
|
# a large index. Format is:
|
|
|
|
#
|
1999-08-10 12:48:23 +02:00
|
|
|
# distribution-name|package-path|installation-prefix|comment| \
|
2003-07-19 04:50:22 +02:00
|
|
|
# description-file|maintainer|categories|build deps|run deps|for arch| \
|
|
|
|
# not for opsys
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: describe
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(describe)
|
|
|
|
describe:
|
2004-04-07 16:26:50 +02:00
|
|
|
@${ECHO_N} "${PKGNAME}|${.CURDIR}|"; \
|
|
|
|
${ECHO_N} "${PREFIX}|"; \
|
|
|
|
${ECHO_N} ${COMMENT:Q}; \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ -f ${DESCR_SRC} ]; then \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|${DESCR_SRC}"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|/dev/null"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|"; \
|
- The comment above the _COOKIE settings says "don't change these!!", so
use = to set them, not ?=.
- _DEPENDS_USE doesn't actually do any macro expansion, so save some
processing time by executing it exactly once (remove the .USE operator).
- Merge the IGNORE targets. Add an IGNORE target for depends and
check-depends (see bottom).
- Don't check for installation of a package in ${DEPENDS} when doing
a "make depends". Instead, let the return code of make fall through
(using && instead of ; in the last clause of each depend recursion block).
- Provide a variable IGNORE_FAIL: when set, causes the ignore message
to be printed (regardless of IGNORE_SILENT or ECHO_MSG setting) and the
build to fail with ${FALSE}. Used with the next addition:
- Add a new target, "check-depends", which is called as part of "real-fetch".
This validates whether the dependencies of a pkg to be built are installed,
and if not, whether those dependencies will prospectively build (will
not set IGNORE directly or indirectly through the various disable options).
Recurses to "depends" with a DEPENDS_TARGET of "check-depends".
...And now, it is no longer necessary to mark dependent pkgs as unusable
when their dependencies are unusable thanks to an incorrect LICENSE,
_FOR_PLATFORM setting, and so forth. The check-depends step will validate
everything before fetching a single file.
1999-05-25 01:04:52 +02:00
|
|
|
case "A${BUILD_DEPENDS}B${DEPENDS}C" in \
|
|
|
|
ABC) ;; \
|
2004-04-07 16:26:50 +02:00
|
|
|
*) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \
|
1999-03-08 18:26:54 +01:00
|
|
|
esac; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|"; \
|
|
|
|
if [ "${DEPENDS}" != "" ]; then \
|
|
|
|
cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \
|
2000-08-01 04:16:58 +02:00
|
|
|
fi; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|"; \
|
2006-01-03 00:24:58 +01:00
|
|
|
if [ "${ONLY_FOR_PLATFORM}" = "" ]; then \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "any"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2006-01-03 00:24:58 +01:00
|
|
|
${ECHO_N} "${ONLY_FOR_PLATFORM}"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|"; \
|
2006-01-03 00:24:58 +01:00
|
|
|
if [ "${NOT_FOR_PLATFORM}" = "" ]; then \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "any"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2006-01-03 00:24:58 +01:00
|
|
|
${ECHO_N} "not ${NOT_FOR_PLATFORM}"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
1997-08-20 12:21:05 +02:00
|
|
|
${ECHO} ""
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: readmes
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(readmes)
|
|
|
|
readmes: readme
|
|
|
|
.endif
|
|
|
|
|
1998-09-23 15:09:32 +02:00
|
|
|
# This target is used to generate README.html files
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: readme
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(readme)
|
2004-02-25 10:24:52 +01:00
|
|
|
FTP_PKG_URL_HOST?= ftp://ftp.NetBSD.org
|
1998-09-23 15:09:32 +02:00
|
|
|
FTP_PKG_URL_DIR?= /pub/NetBSD/packages
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
readme:
|
Speedups!
Major changes:
* Avoid a big bunch of subshells/forks/execs by using make(1) features;
should be good for some minor speedups.
* Use shell builtins for echo, true, false, test. Using full paths here
causes fork&execs, making things slow. Only changed for NetBSD.
* Rename all references to ${.MAKEFLAGS} to ${MAKEFLAGS}. See make(1).
* Evaluate all !=s only once, and add them to MAKEFLAGS
* Pass ${MAKEFLAGS} to ALL ${MAKE} calls
Now PKGTOOLS_VERSION is really only set once in a whole "make package"
cycle, even across dependencies.
Minor changes:
* SORTED_MASTER_SITES was renamed SORTED_MASTER_SITES_CMD and is now
(only) execuded in the places where it's needed.
* Don't check for /usr/bin/fetch - we never had it, and if someone
depends on it he can set FETCH_CMD instead.
* Don't fall back to README.port
* Replace some commands by their uppercase equivalents (sed -> ${SED},
same for grep, awk, ...)
* Some whitespace changes to improve readability
=> With these changes, times for a "make clean" in x11/kde go down to 20%,
time for "make readme" goes down to 33%!
2000-06-03 09:15:28 +02:00
|
|
|
@cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR}
|
1998-09-23 15:09:32 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# This target is used to generate README.html files, very like "readme"
|
|
|
|
# However, a different target was used for ease of use.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: cdrom-readme
|
1998-09-23 15:09:32 +02:00
|
|
|
.if !target(cdrom-readme)
|
|
|
|
CDROM_PKG_URL_HOST?= file://localhost
|
|
|
|
CDROM_PKG_URL_DIR?= /usr/pkgsrc/packages
|
|
|
|
|
|
|
|
cdrom-readme:
|
Speedups!
Major changes:
* Avoid a big bunch of subshells/forks/execs by using make(1) features;
should be good for some minor speedups.
* Use shell builtins for echo, true, false, test. Using full paths here
causes fork&execs, making things slow. Only changed for NetBSD.
* Rename all references to ${.MAKEFLAGS} to ${MAKEFLAGS}. See make(1).
* Evaluate all !=s only once, and add them to MAKEFLAGS
* Pass ${MAKEFLAGS} to ALL ${MAKE} calls
Now PKGTOOLS_VERSION is really only set once in a whole "make package"
cycle, even across dependencies.
Minor changes:
* SORTED_MASTER_SITES was renamed SORTED_MASTER_SITES_CMD and is now
(only) execuded in the places where it's needed.
* Don't check for /usr/bin/fetch - we never had it, and if someone
depends on it he can set FETCH_CMD instead.
* Don't fall back to README.port
* Replace some commands by their uppercase equivalents (sed -> ${SED},
same for grep, awk, ...)
* Some whitespace changes to improve readability
=> With these changes, times for a "make clean" in x11/kde go down to 20%,
time for "make readme" goes down to 33%!
2000-06-03 09:15:28 +02:00
|
|
|
@cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1999-03-08 18:26:54 +01:00
|
|
|
README_NAME= ${TEMPLATES}/README.pkg
|
1997-11-21 18:44:11 +01:00
|
|
|
|
1998-07-22 11:18:46 +02:00
|
|
|
# set up the correct license information as a sed expression
|
2005-05-14 03:50:38 +02:00
|
|
|
.if defined(LICENSE)
|
2005-10-04 19:33:44 +02:00
|
|
|
SED_LICENSE_EXPR= -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|'
|
1998-07-22 11:18:46 +02:00
|
|
|
.else
|
2005-10-04 19:33:44 +02:00
|
|
|
SED_LICENSE_EXPR= -e 's|%%LICENSE%%||'
|
1998-07-22 11:18:46 +02:00
|
|
|
.endif
|
|
|
|
|
1998-08-20 17:16:34 +02:00
|
|
|
# set up the "more info URL" information as a sed expression
|
2005-05-14 03:50:38 +02:00
|
|
|
.if defined(HOMEPAGE)
|
2005-10-04 19:33:44 +02:00
|
|
|
SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%|<p>This package has a home page at <a HREF="${HOMEPAGE}">${HOMEPAGE}</a>.</p>|'
|
1998-08-20 17:16:34 +02:00
|
|
|
.else
|
2005-10-04 19:33:44 +02:00
|
|
|
SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%||'
|
1998-08-20 17:16:34 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-vulnerabilities-html
|
2000-09-28 12:50:43 +02:00
|
|
|
show-vulnerabilities-html:
|
2002-01-28 21:55:26 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2004-12-21 18:30:07 +01:00
|
|
|
if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \
|
2002-01-29 16:07:55 +01:00
|
|
|
${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\<", $$1); \
|
2000-09-28 12:50:43 +02:00
|
|
|
gsub("\>", "\\>", $$1); \
|
2003-02-09 15:59:12 +01:00
|
|
|
printf("<LI><STRONG>%s has a %s exploit (see <a href=\"%s\">%s</a> for more details)</STRONG></LI>\n", $$1, $$2, $$3, $$3) }' \
|
2004-12-21 18:30:07 +01:00
|
|
|
${PKGVULNDIR}/pkg-vulnerabilities; \
|
2000-09-28 12:50:43 +02:00
|
|
|
fi
|
2000-09-19 21:29:11 +02:00
|
|
|
|
|
|
|
|
2003-01-04 23:20:47 +01:00
|
|
|
# If PACKAGES is set to the default (../../packages), the current
|
|
|
|
# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
|
|
|
|
# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
|
|
|
|
# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
|
|
|
|
# the target used to generate the README.html file.
|
1999-07-14 21:34:06 +02:00
|
|
|
.PHONY: README.html
|
|
|
|
README.html: .PRECIOUS
|
2003-02-09 15:38:51 +01:00
|
|
|
@${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1
|
2004-07-03 23:59:04 +02:00
|
|
|
@if ${TEST} -d ${PACKAGES}; then \
|
2003-01-04 23:20:47 +01:00
|
|
|
cd ${PACKAGES}; \
|
2003-01-15 21:55:38 +01:00
|
|
|
case `${PWD_CMD}` in \
|
2004-10-07 04:01:37 +02:00
|
|
|
${PKGSRCDIR}/packages) \
|
2003-01-04 23:20:47 +01:00
|
|
|
MULTIARCH=no; \
|
|
|
|
;; \
|
|
|
|
*) \
|
|
|
|
MULTIARCH=yes; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
cd ${.CURDIR} ; \
|
|
|
|
fi; \
|
|
|
|
${AWK} -f ../../mk/scripts/genreadme.awk \
|
|
|
|
builddependsfile=/dev/null \
|
|
|
|
dependsfile=/dev/null \
|
2005-05-22 17:31:03 +02:00
|
|
|
AWK=${AWK:Q} \
|
|
|
|
CMP=${CMP:Q} \
|
|
|
|
DISTDIR=${DISTDIR:Q} \
|
|
|
|
GREP=${GREP:Q} \
|
|
|
|
PACKAGES=${PACKAGES:Q} \
|
|
|
|
PKG_INFO=${PKG_INFO:Q} \
|
|
|
|
PKG_SUFX=${PKG_SUFX:Q} \
|
|
|
|
PKG_URL=${PKG_URL:Q} \
|
|
|
|
PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||:Q} \
|
|
|
|
SED=${SED:Q} \
|
|
|
|
SETENV=${SETENV:Q} \
|
|
|
|
SORT=${SORT:Q} \
|
|
|
|
TMPDIR=${TMPDIR:U/tmp:Q} \
|
|
|
|
SINGLEPKG=${PKGPATH:Q} \
|
2003-03-30 07:06:49 +02:00
|
|
|
$@.tmp1
|
2003-01-04 23:20:47 +01:00
|
|
|
@${RM} $@.tmp1
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-pkgtools-version
|
1999-03-08 18:26:54 +01:00
|
|
|
.if !target(show-pkgtools-version)
|
|
|
|
show-pkgtools-version:
|
2000-01-07 13:24:14 +01:00
|
|
|
@${ECHO} ${PKGTOOLS_VERSION}
|
1999-08-31 23:45:45 +02:00
|
|
|
.endif
|
1998-11-09 15:41:30 +01:00
|
|
|
|
1999-09-28 12:03:16 +02:00
|
|
|
# convenience target, to display make variables from command line
|
|
|
|
# i.e. "make show-var VARNAME=var", will print var's value
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-var
|
1999-09-28 12:03:16 +02:00
|
|
|
show-var:
|
2001-04-17 18:56:21 +02:00
|
|
|
@${ECHO} ${${VARNAME}:Q}
|
1999-09-28 12:03:16 +02:00
|
|
|
|
2001-10-26 23:42:44 +02:00
|
|
|
# enhanced version of target above, to display multiple variables
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-vars
|
2001-10-26 23:42:44 +02:00
|
|
|
show-vars:
|
|
|
|
.for VARNAME in ${VARNAMES}
|
|
|
|
@${ECHO} ${${VARNAME}:Q}
|
|
|
|
.endfor
|
|
|
|
|
2005-10-16 19:44:45 +02:00
|
|
|
# displays multiple variables as shell expressions
|
|
|
|
# VARS is space separated list of VARNAME:shellvarname
|
|
|
|
.PHONY: show-vars-eval
|
|
|
|
show-vars-eval:
|
|
|
|
.for var in ${VARS}
|
|
|
|
@${ECHO} ${var:C/^.*://}="${${var:C/:.*$//}:Q}"
|
|
|
|
.endfor
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-build-depends-list
|
2000-08-01 04:51:34 +02:00
|
|
|
.if !target(print-build-depends-list)
|
|
|
|
print-build-depends-list:
|
2005-02-11 16:55:13 +01:00
|
|
|
. if !empty(BUILD_DEPENDS) || !empty(DEPENDS)
|
2004-04-07 16:26:50 +02:00
|
|
|
@${ECHO_N} 'This package requires package(s) "'
|
|
|
|
@${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`
|
1997-08-20 12:21:05 +02:00
|
|
|
@${ECHO} '" to build.'
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-run-depends-list
|
2000-08-01 04:51:34 +02:00
|
|
|
.if !target(print-run-depends-list)
|
|
|
|
print-run-depends-list:
|
2005-02-11 16:55:13 +01:00
|
|
|
. if !empty(DEPENDS)
|
2004-04-07 16:26:50 +02:00
|
|
|
@${ECHO_N} 'This package requires package(s) "'
|
|
|
|
@${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`
|
1997-08-20 12:21:05 +02:00
|
|
|
@${ECHO} '" to run.'
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-01-04 22:13:34 +01:00
|
|
|
# This target is used by the mk/scripts/mkreadme script to generate
|
2002-11-11 22:46:51 +01:00
|
|
|
# README.html files
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-summary-data
|
2002-11-11 22:46:51 +01:00
|
|
|
.if !target(print-summary-data)
|
|
|
|
print-summary-data:
|
2005-10-07 19:39:28 +02:00
|
|
|
@${ECHO} depends ${PKGPATH} ${DEPENDS:Q}
|
|
|
|
@${ECHO} build_depends ${PKGPATH} ${BUILD_DEPENDS:Q}
|
|
|
|
@${ECHO} conflicts ${PKGPATH} ${CONFLICTS:Q}
|
|
|
|
@${ECHO} index ${PKGPATH} ${PKGNAME:Q}
|
|
|
|
@${ECHO} htmlname ${PKGPATH} ${_HTML_PKGLINK:Q}
|
2002-11-11 22:46:51 +01:00
|
|
|
@${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q}
|
|
|
|
@${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q}
|
|
|
|
@${ECHO} comment ${PKGPATH} ${COMMENT:Q}
|
|
|
|
@${ECHO} license ${PKGPATH} ${LICENSE:Q}
|
2006-01-03 00:24:58 +01:00
|
|
|
@if [ "${ONLY_FOR_PLATFORM}" = "" ]; then \
|
2003-07-23 11:41:23 +02:00
|
|
|
${ECHO} "onlyfor ${PKGPATH} any"; \
|
|
|
|
else \
|
2006-01-03 00:24:58 +01:00
|
|
|
${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_PLATFORM}"; \
|
|
|
|
fi
|
|
|
|
@if [ "${NOT_FOR_PLATFORM}" = "" ]; then \
|
2003-07-23 11:41:23 +02:00
|
|
|
${ECHO} "notfor ${PKGPATH} any"; \
|
|
|
|
else \
|
2006-01-03 00:24:58 +01:00
|
|
|
${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_PLATFORM}"; \
|
2003-07-23 11:41:23 +02:00
|
|
|
fi;
|
|
|
|
@${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}"
|
|
|
|
@${ECHO} "categories ${PKGPATH} ${CATEGORIES}"
|
2004-12-21 18:30:07 +01:00
|
|
|
@if [ -f ${DESCR_SRC} ]; then \
|
|
|
|
${ECHO} "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}"; \
|
|
|
|
else \
|
|
|
|
${ECHO} "descr ${PKGPATH} /dev/null"; \
|
2003-07-23 11:41:23 +02:00
|
|
|
fi
|
|
|
|
@${ECHO} "prefix ${PKGPATH} ${PREFIX}"
|
2002-11-11 22:46:51 +01:00
|
|
|
.endif
|
|
|
|
|
2005-09-28 10:24:52 +02:00
|
|
|
LICENSE_FILE?= ${PKGSRCDIR}/licenses/${LICENSE}
|
|
|
|
|
2001-01-05 18:37:12 +01:00
|
|
|
.if !target(show-license)
|
|
|
|
show-license show-licence:
|
2005-09-28 10:24:52 +02:00
|
|
|
@license=${LICENSE:Q}; \
|
|
|
|
license_file=${LICENSE_FILE:Q}; \
|
|
|
|
pager=${PAGER:Q}; \
|
|
|
|
case "$$pager" in "") pager=${CAT:Q};; esac; \
|
|
|
|
case "$$license" in "") exit 0;; esac; \
|
|
|
|
if ${TEST} -f "$$license_file"; then \
|
|
|
|
$$pager "$$license_file"; \
|
|
|
|
else \
|
|
|
|
${ECHO} "Generic $$license information not available"; \
|
|
|
|
${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \
|
2001-01-05 18:37:12 +01:00
|
|
|
fi
|
|
|
|
.endif
|
1999-11-29 20:48:15 +01:00
|
|
|
|
2005-05-08 15:52:25 +02:00
|
|
|
# This target is defined in bsd.options.mk for packages that use
|
|
|
|
# the options framework.
|
2005-05-31 14:10:07 +02:00
|
|
|
.if !target(show-options)
|
|
|
|
.PHONY: show-options
|
|
|
|
show-options:
|
2005-05-08 15:52:25 +02:00
|
|
|
@${ECHO} This package does not use the options framework.
|
|
|
|
.endif
|
|
|
|
|
1999-08-10 12:48:23 +02:00
|
|
|
# Depend is generally meaningless for arbitrary packages, but if someone wants
|
1997-08-20 12:21:05 +02:00
|
|
|
# one they can override this. This is just to catch people who've gotten into
|
1998-04-19 14:48:07 +02:00
|
|
|
# the habit of typing `${MAKE} depend all install' as a matter of course.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: depend
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(depend)
|
|
|
|
depend:
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Same goes for tags
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: tags
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(tags)
|
|
|
|
tags:
|
|
|
|
.endif
|
1997-09-28 02:44:15 +02:00
|
|
|
|
2006-01-13 00:43:56 +01:00
|
|
|
.include "../../mk/plist/bsd.plist.mk"
|
|
|
|
|
2006-01-18 01:10:07 +01:00
|
|
|
.include "../../mk/bsd.utils.mk"
|
|
|
|
|
2003-08-27 13:29:56 +02:00
|
|
|
.include "../../mk/subst.mk"
|
|
|
|
|
2000-07-28 03:16:27 +02:00
|
|
|
#
|
|
|
|
# For bulk build targets (bulk-install, bulk-package), the
|
2000-08-01 04:16:58 +02:00
|
|
|
# BATCH variable must be set in /etc/mk.conf:
|
2000-07-28 03:16:27 +02:00
|
|
|
#
|
|
|
|
.if defined(BATCH)
|
2001-07-19 00:43:32 +02:00
|
|
|
. include "../../mk/bulk/bsd.bulk-pkg.mk"
|
2000-07-28 03:16:27 +02:00
|
|
|
.endif
|
2005-01-10 19:34:48 +01:00
|
|
|
|
|
|
|
# Create a PKG_ERROR_HANDLER shell command for each class listed in
|
|
|
|
# PKG_ERROR_CLASSES. The error handler is meant to be invoked within
|
|
|
|
# a make target.
|
|
|
|
#
|
|
|
|
.for _class_ in ${PKG_ERROR_CLASSES}
|
|
|
|
PKG_ERROR_HANDLER.${_class_}?= { \
|
|
|
|
ec=$$?; \
|
|
|
|
for str in ${PKG_ERROR_MSG.${_class_}}; do \
|
2006-06-06 00:49:44 +02:00
|
|
|
${PHASE_MSG} "$$str"; \
|
2005-01-10 19:34:48 +01:00
|
|
|
done; \
|
|
|
|
exit $$ec; \
|
|
|
|
}
|
|
|
|
.endfor
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
|
2005-05-12 00:08:18 +02:00
|
|
|
# Cache variables listed in MAKEVARS in a phase-specific "makevars.mk"
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
# file. These variables are effectively passed to sub-make processes
|
|
|
|
# that are invoked on the same Makefile.
|
|
|
|
#
|
|
|
|
.for _phase_ in ${ALL_PHASES}
|
2005-05-12 00:08:18 +02:00
|
|
|
${_MAKEVARS_MK.${_phase_}}: ${WRKDIR}
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${.TARGET}.tmp
|
2006-06-06 05:05:48 +02:00
|
|
|
. for _var_ in ${MAKEVARS:O:u}
|
|
|
|
. if defined(${_var_})
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${ECHO} ${_var_}"= "${${_var_}:Q} >> ${.TARGET}.tmp
|
2006-06-06 05:05:48 +02:00
|
|
|
. endif
|
|
|
|
. endfor
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if ${TEST} -f ${.TARGET}.tmp; then \
|
2005-05-12 00:08:18 +02:00
|
|
|
( ${ECHO} ".if !defined(_MAKEVARS_MK)"; \
|
|
|
|
${ECHO} "_MAKEVARS_MK= defined"; \
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
${ECHO} ""; \
|
|
|
|
${CAT} ${.TARGET}.tmp; \
|
|
|
|
${ECHO} ""; \
|
2005-05-12 00:08:18 +02:00
|
|
|
${ECHO} ".endif # _MAKEVARS_MK"; \
|
Teach bsd.pkg.mk to create a phase-specific "makevars.mk" file that
caches variable definitions that were computed by make. These variables
are specified by listing them in MAKE_VARS, e.g.,
.if !defined(FOO)
FOO!= very_time_consuming_command
.endif
MAKE_VARS+= FOO
bsd.pkg.mk will include only the one generated during the most recent
phase. A particular phase's makevars.mk file consists of variable
definitions that are a superset of all of the ones produced in previous
phases of the build.
The caching is useful because bsd.pkg.mk invokes make recursively,
which in the example above has the potential to run the very time-consuming
command each time unless we cause FOO to be defined for the sub-make
processes. We don't cache via MAKE_FLAGS because MAKE_FLAGS isn't
consistently applied to every invocation of make, and also because
MAKE_FLAGS can overflow the maximum length of a make variable very
quickly if we add many values to it.
One important and desirable property of variables cached via MAKE_VARS
is that they only apply to the current package, and not to any
dependencies whose builds may have been triggered by the current
package.
The makevars.mk files are generated by new targets fetch-vars,
extract-vars, patch-vars, etc., and these targets are built during
the corresponding real-* target to ensure that they are being invoked
with PKG_PHASE set to the proper value.
Also, remove the variables cache file that bsd.wrapper.mk was generating
since the new makevars.mk files provide the same functionality at a
higher level. Change all WRAPPER_VARS definitions that were used by
the old wrapper-phase cache file into MAKE_VARS definitions.
2005-05-09 07:06:55 +02:00
|
|
|
) > ${.TARGET}; \
|
|
|
|
${RM} -f ${.TARGET}.tmp; \
|
|
|
|
fi
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
|
|
|
|
.endfor
|
|
|
|
.undef _phase_
|
2005-05-18 04:52:38 +02:00
|
|
|
|
|
|
|
# show-tools emits a /bin/sh shell script that defines all known tools
|
|
|
|
# to the values they have in the pkgsrc infrastructure.
|
|
|
|
#
|
|
|
|
# Don't move this code away from here unless you know what you're doing.
|
|
|
|
#
|
|
|
|
.PHONY: show-tools
|
|
|
|
show-tools:
|
|
|
|
.for _t_ in ${_USE_TOOLS}
|
|
|
|
. if defined(_TOOLS_VARNAME.${_t_})
|
2005-05-26 13:15:30 +02:00
|
|
|
@${ECHO} ${_TOOLS_VARNAME.${_t_}:Q}=${${_TOOLS_VARNAME.${_t_}}:Q:Q}
|
2005-05-18 04:52:38 +02:00
|
|
|
. endif
|
|
|
|
.endfor
|
2005-06-09 00:44:08 +02:00
|
|
|
|
2005-06-09 18:26:23 +02:00
|
|
|
# changes-entry appends a correctly-formatted entry to the pkgsrc
|
|
|
|
# CHANGES file.
|
2005-06-09 18:08:27 +02:00
|
|
|
#
|
|
|
|
# The following variables may be set:
|
|
|
|
#
|
|
|
|
# CTYPE is the type of entry to add and is one of "Added", "Updated",
|
|
|
|
# "Renamed", "Moved", of "Removed". The default CTYPE is "Updated".
|
|
|
|
#
|
|
|
|
# NETBSD_LOGIN_NAME is the login name assigned by the NetBSD Project.
|
|
|
|
# It defaults to the local login name.
|
|
|
|
#
|
2005-06-09 18:26:23 +02:00
|
|
|
# PKGSRC_CHANGES is the path to the CHANGES file to which the entry
|
|
|
|
# is appended. It defaults to ${PKGSRCDIR}/doc/CHANGES.
|
|
|
|
#
|
2005-06-09 18:08:27 +02:00
|
|
|
# Example usage:
|
|
|
|
#
|
2005-06-09 18:26:23 +02:00
|
|
|
# % cd /usr/pkgsrc/category/package
|
|
|
|
# % make changes-entry CTYPE=Added
|
2005-06-09 18:08:27 +02:00
|
|
|
#
|
2005-06-09 18:26:23 +02:00
|
|
|
CTYPE?= Updated
|
|
|
|
NETBSD_LOGIN_NAME?= ${_NETBSD_LOGIN_NAME_cmd:sh}
|
2006-04-18 02:25:04 +02:00
|
|
|
PKGSRC_CHANGES?= ${PKGSRCDIR}/doc/CHANGES-${_CYEAR_cmd:sh}
|
2005-06-09 18:26:23 +02:00
|
|
|
|
2006-04-18 02:25:04 +02:00
|
|
|
_CYEAR_cmd= ${DATE} -u +%Y
|
2005-06-09 18:26:23 +02:00
|
|
|
_CDATE_cmd= ${DATE} -u +%Y-%m-%d
|
|
|
|
_NETBSD_LOGIN_NAME_cmd= ${ID} -nu
|
|
|
|
|
|
|
|
_CTYPE1= " "${CTYPE:Q}" "${PKGPATH:Q}
|
2005-06-09 00:44:08 +02:00
|
|
|
.if !empty(CTYPE:MUpdated)
|
|
|
|
_CTYPE2= " to "${PKGVERSION:Q}
|
|
|
|
.elif !empty(CTYPE:MAdded)
|
|
|
|
_CTYPE2= " version "${PKGVERSION:Q}
|
|
|
|
.elif !empty(CTYPE:MRenamed) || !empty(CTYPE:MMoved)
|
|
|
|
_CTYPE2= " to XXX"
|
|
|
|
.else
|
|
|
|
_CTYPE2=
|
|
|
|
.endif
|
2005-06-09 18:26:23 +02:00
|
|
|
_CTYPE3= " ["${NETBSD_LOGIN_NAME:Q}" "${_CDATE_cmd:sh:Q}"]"
|
|
|
|
|
2005-06-09 00:44:08 +02:00
|
|
|
.PHONY: changes-entry
|
|
|
|
changes-entry:
|
2005-06-09 18:26:23 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${ECHO} ${_CTYPE1}${_CTYPE2}${_CTYPE3} >> ${PKGSRC_CHANGES:Q}
|