2004-09-24 17:00:10 +02:00
|
|
|
# $NetBSD: bsd.pkg.mk,v 1.1500 2004/09/24 15:00:10 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
|
|
|
#
|
1998-06-05 14:45:53 +02:00
|
|
|
# Please see the NetBSD packages(7) manual page for details on the
|
|
|
|
# that 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.
|
|
|
|
#
|
|
|
|
# NEVER override the "regular" targets unless you want to open
|
|
|
|
# a major can of worms.
|
|
|
|
|
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 any preferences, if not already included, and common definitions
|
|
|
|
.include "../../mk/bsd.prefs.mk"
|
1998-08-28 16:03:48 +02:00
|
|
|
|
2002-01-27 21:01:56 +01:00
|
|
|
##### Prevent /etc/mk.conf from being included by a distribution's BSD-style
|
|
|
|
##### Makefiles. We really don't want to pick up settings that are used by
|
|
|
|
##### builds in /usr/src, e.g. DESTDIR.
|
2003-12-03 19:13:28 +01:00
|
|
|
.if defined(PKGMAKECONF)
|
|
|
|
MAKE_ENV+= MAKECONF=${PKGMAKECONF}
|
|
|
|
.else
|
2002-01-27 21:01:56 +01:00
|
|
|
MAKE_ENV+= MAKECONF=/dev/null
|
2003-12-03 19:13:28 +01:00
|
|
|
.endif
|
2002-01-27 21:01:56 +01:00
|
|
|
|
2002-01-06 03:03:40 +01:00
|
|
|
##### Pass information about desired toolchain to package build.
|
|
|
|
.if defined(USETOOLS)
|
|
|
|
MAKE_ENV+= USETOOLS="${USETOOLS}"
|
|
|
|
.endif
|
|
|
|
|
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.
|
2004-08-05 01:22:38 +02:00
|
|
|
.PHONY: pre-install-depends build-defs-message
|
|
|
|
pre-install-depends: 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
|
|
|
|
|
2003-10-02 16:41:42 +02:00
|
|
|
# Fail-safe in the case of circular dependencies
|
|
|
|
.if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME})
|
|
|
|
PKG_FAIL_REASON+="Circular dependency detected"
|
|
|
|
.endif
|
|
|
|
|
2002-05-26 17:00:25 +02:00
|
|
|
##### Some NetBSD platforms permitted the user to set the binary format while
|
|
|
|
##### they were in the process of transitioning to ELF. Packages with BSD-style
|
|
|
|
##### make systems need this setting to be passed in.
|
|
|
|
.if defined(OBJECT_FMT)
|
|
|
|
MAKE_ENV+= OBJECT_FMT="${OBJECT_FMT}"
|
|
|
|
.endif
|
|
|
|
|
2003-10-02 17:45:31 +02:00
|
|
|
# Allow variables to be set on a per-OS basis
|
|
|
|
OPSYSVARS+= CFLAGS CPPFLAGS LDFLAGS LIBS
|
|
|
|
.for _var_ in ${OPSYSVARS:O}
|
|
|
|
. if defined(${_var_}.${OPSYS})
|
|
|
|
${_var_}+= ${${_var_}.${OPSYS}}
|
|
|
|
. elif defined(${_var_}.*)
|
|
|
|
${_var_}+= ${${_var_}.*}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
2004-08-05 04:10:20 +02: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
|
|
|
|
|
2000-09-09 20:45:16 +02:00
|
|
|
##### Build crypto packages by default.
|
|
|
|
MKCRYPTO?= yes
|
|
|
|
|
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
|
|
|
CLEANDEPENDS?= NO
|
1999-08-21 03:17:59 +02:00
|
|
|
DEINSTALLDEPENDS?= NO # add -R to pkg_delete
|
1999-08-30 00:13:01 +02:00
|
|
|
REINSTALL?= NO # reinstall upon update
|
2000-08-31 04:32:32 +02:00
|
|
|
CHECK_SHLIBS?= YES # run check-shlibs after install
|
2001-01-05 19:03:14 +01:00
|
|
|
SHLIB_HANDLING?= YES # do automatic shared lib handling
|
1999-10-31 20:43:02 +01:00
|
|
|
NOCLEAN?= NO # don't clean up after update
|
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/^.*-//}
|
2000-11-21 01:16:43 +01:00
|
|
|
PKGWILDCARD?= ${PKGBASE}-[0-9]*
|
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
|
|
|
|
SVR4_PKGNAME?= ${PKGNAME}
|
2000-06-03 20:51:34 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
_DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
|
|
|
|
|
2002-07-02 13:26:05 +02:00
|
|
|
INTERACTIVE_STAGE?= none
|
|
|
|
|
2003-09-02 08:59:37 +02: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
|
|
|
|
|
|
|
|
# The style of PLISTs that are used by the installed package.
|
|
|
|
# Possible: dynamic, static
|
|
|
|
#
|
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
PLIST_TYPE?= dynamic
|
|
|
|
.elif ${PKG_INSTALLATION_TYPE} == "overwrite"
|
|
|
|
PLIST_TYPE?= static
|
|
|
|
.else
|
|
|
|
PLIST_TYPE?= static
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# PLIST_TYPE can only be one of two values: "dynamic" or "static". If we
|
|
|
|
# don't explicitly ask for "static", assume "dynamic".
|
|
|
|
#
|
|
|
|
.if (${PLIST_TYPE} != "dynamic") && (${PLIST_TYPE} != "static")
|
|
|
|
PKG_FAIL_REASON+= "PLIST_TYPE must be \`\`dynamic'' or \`\`static''."
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if (${PKG_INSTALLATION_TYPE} == "overwrite") && (${PLIST_TYPE} != "static")
|
|
|
|
PKG_FAIL_REASON+= "PLIST_TYPE must be \`\`static'' for \`\`overwrite'' packages."
|
|
|
|
.endif
|
|
|
|
|
2002-10-23 00:54:07 +02:00
|
|
|
.if defined(USE_IMAKE)
|
2004-05-24 22:54:12 +02:00
|
|
|
PREPEND_PATH+= ${X11BASE}/bin
|
2002-10-23 00:54:07 +02:00
|
|
|
USE_X11BASE?= implied
|
2003-02-24 20:49:47 +01:00
|
|
|
PLIST_SUBST+= IMAKE_MAN_SOURCE_PATH=${IMAKE_MAN_SOURCE_PATH} \
|
|
|
|
IMAKE_MAN_DIR=${IMAKE_MAN_DIR} \
|
|
|
|
IMAKE_LIBMAN_DIR=${IMAKE_LIBMAN_DIR} \
|
2004-01-31 17:52:16 +01:00
|
|
|
IMAKE_KERNMAN_DIR=${IMAKE_KERNMAN_DIR} \
|
2003-02-24 20:49:47 +01:00
|
|
|
IMAKE_FILEMAN_DIR=${IMAKE_FILEMAN_DIR} \
|
2004-01-31 17:52:16 +01:00
|
|
|
IMAKE_MISCMAN_DIR=${IMAKE_MISCMAN_DIR} \
|
2003-02-24 20:49:47 +01:00
|
|
|
IMAKE_MAN_SUFFIX=${IMAKE_MAN_SUFFIX} \
|
|
|
|
IMAKE_LIBMAN_SUFFIX=${IMAKE_LIBMAN_SUFFIX} \
|
2004-01-31 17:52:16 +01:00
|
|
|
IMAKE_KERNMAN_SUFFIX=${IMAKE_KERNMAN_SUFFIX} \
|
2003-02-24 20:49:47 +01:00
|
|
|
IMAKE_FILEMAN_SUFFIX=${IMAKE_FILEMAN_SUFFIX} \
|
2004-01-31 17:52:16 +01:00
|
|
|
IMAKE_MISCMAN_SUFFIX=${IMAKE_MISCMAN_SUFFIX} \
|
2003-02-24 20:49:47 +01:00
|
|
|
IMAKE_MANNEWSUFFIX=${IMAKE_MANNEWSUFFIX}
|
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
|
|
|
. if !empty(USE_BUILDLINK3:M[yY][eE][sS])
|
2004-03-19 01:03:55 +01:00
|
|
|
MAKE_FLAGS+= CC="${CC}" CXX="${CXX}"
|
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
|
|
|
. endif
|
2002-10-23 00:54:07 +02:00
|
|
|
.endif
|
|
|
|
.if defined(USE_X11BASE)
|
|
|
|
USE_X11?= implied
|
|
|
|
.endif
|
|
|
|
|
2004-01-06 10:24:14 +01:00
|
|
|
# Set the PREFIX appropriately.
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
Add a new package-settable variable, INSTALLATION_PREFIX, as discussed
with gavan@NetBSD.org at pkgsrcCon.
Within the pkgsrc infrastructure, LOCALBASE has two different meanings:
(1) where the package being built should be installed, and
(2) where to find previously installed packages.
Most instances of case (2) should be converted to use EVAL_PREFIX,
but there are some cases where this is impossible. To resolve this,
we preserve LOCALBASE to mean (2) and we create a new variable
INSTALLATION_PREFIX to mean (1).
INSTALLATION_PREFIX is meant to be set some time before bsd.pkg.mk is
included, and provides the value for PREFIX if it's defined, e.g.
NO_MTREE= yes
INSTALLATION_PREFIX= /
.include "../../mk/bsd.pkg.mk"
This allows us to remove all cases where PREFIX is explicitly set in
the package Makefile, e.g. Java VM packages, qmail, etc.
2004-05-17 06:44:44 +02:00
|
|
|
. if defined(INSTALLATION_PREFIX)
|
|
|
|
PREFIX= ${INSTALLATION_PREFIX}
|
|
|
|
. elif defined(USE_X11BASE)
|
2000-07-31 04:49:47 +02:00
|
|
|
PREFIX= ${X11PREFIX}
|
2003-09-02 08:59:37 +02:00
|
|
|
. elif defined(USE_CROSSBASE)
|
1998-08-11 21:30:48 +02:00
|
|
|
PREFIX= ${CROSSBASE}
|
1998-08-12 03:30:13 +02:00
|
|
|
NO_MTREE= yes
|
2003-09-02 08:59:37 +02:00
|
|
|
. else
|
1998-08-11 21:30:48 +02:00
|
|
|
PREFIX= ${LOCALBASE}
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
|
|
|
.elif ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
PREFIX= ${DEPOTBASE}/${PKGNAME}
|
|
|
|
NO_MTREE= yes
|
|
|
|
.endif
|
|
|
|
|
Add a new package-settable variable, INSTALLATION_PREFIX, as discussed
with gavan@NetBSD.org at pkgsrcCon.
Within the pkgsrc infrastructure, LOCALBASE has two different meanings:
(1) where the package being built should be installed, and
(2) where to find previously installed packages.
Most instances of case (2) should be converted to use EVAL_PREFIX,
but there are some cases where this is impossible. To resolve this,
we preserve LOCALBASE to mean (2) and we create a new variable
INSTALLATION_PREFIX to mean (1).
INSTALLATION_PREFIX is meant to be set some time before bsd.pkg.mk is
included, and provides the value for PREFIX if it's defined, e.g.
NO_MTREE= yes
INSTALLATION_PREFIX= /
.include "../../mk/bsd.pkg.mk"
This allows us to remove all cases where PREFIX is explicitly set in
the package Makefile, e.g. Java VM packages, qmail, etc.
2004-05-17 06:44:44 +02:00
|
|
|
.if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(INSTALLATION_PREFIX)
|
|
|
|
PKG_SKIP_REASON= "INSTALLATION_PREFIX can't be used in a pkgviews package"
|
|
|
|
.endif
|
|
|
|
|
2004-01-23 18:55:17 +01:00
|
|
|
# If USE_XPKGWEDGE is set, then add a build dependency on xpkgwedge for
|
|
|
|
# X11 packages.
|
|
|
|
#
|
2004-01-07 00:00:51 +01:00
|
|
|
.if defined(USE_X11BASE)
|
|
|
|
. if !empty(USE_XPKGWEDGE:M[yY][eE][sS])
|
|
|
|
BUILD_DEPENDS+= xpkgwedge>=${_XPKGWEDGE_REQD}:../../pkgtools/xpkgwedge
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
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
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
#
|
|
|
|
# _PLIST_IGNORE_FILES basically mirrors the list of ignored files found
|
|
|
|
# in pkg_views(1). It's used by the dynamic PLIST generator to skip
|
|
|
|
# adding the named files to the PLIST.
|
|
|
|
#
|
|
|
|
_PLIST_IGNORE_FILES= +* # package metadata files
|
|
|
|
_PLIST_IGNORE_FILES+= info/dir
|
|
|
|
.if defined(INFO_DIR) && empty(INFO_DIR:Minfo)
|
|
|
|
_PLIST_IGNORE_FILES+= ${INFO_DIR}/dir
|
|
|
|
.endif
|
|
|
|
_PLIST_IGNORE_FILES+= *[~\#] *.OLD *.orig *,v # scratch config files
|
|
|
|
_PLIST_IGNORE_FILES+= ${PLIST_IGNORE_FILES}
|
|
|
|
.endif
|
|
|
|
BUILD_DEFS+= _PLIST_IGNORE_FILES
|
|
|
|
|
2001-10-04 09:56:06 +02:00
|
|
|
# We need to make sure the buildlink-x11 package is not installed since it
|
2002-08-06 08:11:12 +02:00
|
|
|
# breaks builds that use imake.
|
2001-10-04 09:56:06 +02:00
|
|
|
#
|
2002-08-06 08:11:12 +02:00
|
|
|
.if defined(USE_IMAKE)
|
2001-10-04 09:56:06 +02:00
|
|
|
. if exists(${LOCALBASE}/lib/X11/config/buildlinkX11.def) || \
|
|
|
|
exists(${X11BASE}/lib/X11/config/buildlinkX11.def)
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} uses imake, but the buildlink-x11 package was found." \
|
2001-10-04 09:56:06 +02:00
|
|
|
" Please deinstall it (pkg_delete buildlink-x11)."
|
|
|
|
. endif
|
2002-08-06 08:11:12 +02:00
|
|
|
.endif # USE_IMAKE
|
2001-10-04 09:56:06 +02:00
|
|
|
|
2003-08-27 03:01:25 +02:00
|
|
|
.if defined(USE_GNU_TOOLS) && !empty(USE_GNU_TOOLS:Mmake)
|
2003-08-26 22:15:23 +02:00
|
|
|
_USE_GMAKE= yes
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(_USE_GMAKE)
|
1997-11-05 14:36:31 +01:00
|
|
|
MAKE_PROGRAM= ${GMAKE}
|
2003-08-26 22:15:23 +02:00
|
|
|
.elif defined(USE_IMAKE)
|
2001-11-21 13:53:04 +01:00
|
|
|
MAKE_PROGRAM= ${_IMAKE_MAKE}
|
2003-08-26 22:15:23 +02:00
|
|
|
.else
|
2001-06-07 17:40:15 +02:00
|
|
|
MAKE_PROGRAM= ${MAKE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
2004-02-12 10:59:48 +01:00
|
|
|
CONFIGURE_ENV+= MAKE="${MAKE_PROGRAM:T}"
|
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
|
|
|
|
2002-06-15 23:19:59 +02:00
|
|
|
.if defined(PKG_USE_KERBEROS)
|
2004-02-02 12:34:17 +01:00
|
|
|
CRYPTO?= uses Kerberos encryption code
|
1999-09-14 04:32:21 +02:00
|
|
|
BUILD_DEFS+= KERBEROS
|
|
|
|
.endif
|
|
|
|
|
2004-02-10 03:18:04 +01:00
|
|
|
# Distill the PERL5_REQD list into a single _PERL5_REQD value that is the
|
|
|
|
# highest version of Perl required.
|
|
|
|
#
|
|
|
|
PERL5_REQD+= 5.0
|
|
|
|
PERL5_REQD+= ${_OPSYS_PERL_REQD}
|
|
|
|
|
|
|
|
_PERL5_STRICTEST_REQD?= none
|
|
|
|
.for _version_ in ${PERL5_REQD}
|
|
|
|
. for _pkg_ in perl-${_version_}
|
|
|
|
. if ${_PERL5_STRICTEST_REQD} == "none"
|
|
|
|
_PERL5_PKG_SATISFIES_DEP= YES
|
|
|
|
. for _vers_ in ${PERL5_REQD}
|
|
|
|
. if !empty(_PERL5_PKG_SATISFIES_DEP:M[yY][eE][sS])
|
|
|
|
_PERL5_PKG_SATISFIES_DEP!= \
|
2004-03-13 20:43:03 +01:00
|
|
|
if ${PKG_ADMIN} pmatch 'perl>=${_vers_}' ${_pkg_} 2>/dev/null; then \
|
2004-02-10 03:18:04 +01:00
|
|
|
${ECHO} "YES"; \
|
|
|
|
else \
|
|
|
|
${ECHO} "NO"; \
|
|
|
|
fi
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. if !empty(_PERL5_PKG_SATISFIES_DEP:M[yY][eE][sS])
|
|
|
|
_PERL5_STRICTEST_REQD= ${_version_}
|
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
_PERL5_REQD= ${_PERL5_STRICTEST_REQD}
|
2002-07-24 21:42:21 +02:00
|
|
|
|
|
|
|
# Convert USE_PERL5 to be two-valued: either "build" or "run" to denote
|
|
|
|
# whether we want a build-time or run-time dependency on perl.
|
|
|
|
#
|
2001-05-09 04:13:01 +02:00
|
|
|
.if defined(USE_PERL5)
|
2002-07-24 21:42:21 +02:00
|
|
|
. if (${USE_PERL5} == "build")
|
|
|
|
_PERL5_DEPMETHOD= BUILD_DEPENDS
|
2002-07-23 00:00:49 +02:00
|
|
|
. else
|
2002-07-24 21:42:21 +02:00
|
|
|
USE_PERL5:= run
|
|
|
|
_PERL5_DEPMETHOD= DEPENDS
|
2002-07-23 00:00:49 +02:00
|
|
|
. endif
|
2004-04-26 07:13:06 +02:00
|
|
|
_PERL5_DEPENDS= {perl>=${_PERL5_REQD},perl-thread>=${_PERL5_REQD}}
|
2004-03-29 08:52:23 +02:00
|
|
|
PERL5_PKGSRCDIR?= ../../lang/perl58
|
2003-09-13 10:20:08 +02:00
|
|
|
. if !defined(BUILDLINK_DEPENDS.perl)
|
2002-07-24 21:42:21 +02:00
|
|
|
${_PERL5_DEPMETHOD}+= ${_PERL5_DEPENDS}:${PERL5_PKGSRCDIR}
|
2002-09-06 10:10:40 +02:00
|
|
|
. endif
|
2002-07-24 21:42:21 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(USE_PERL5) && (${USE_PERL5} == "run")
|
2003-09-13 01:33:07 +02:00
|
|
|
. if !defined(PERL5_SITELIB) || !defined(PERL5_SITEARCH) || !defined(PERL5_ARCHLIB)
|
|
|
|
. if exists(${PERL5})
|
|
|
|
. if exists(${LOCALBASE}/share/mk/bsd.perl.mk)
|
|
|
|
. include "${LOCALBASE}/share/mk/bsd.perl.mk"
|
|
|
|
. else
|
2000-10-18 01:56:19 +02:00
|
|
|
PERL5_SITELIB!= eval `${PERL5} -V:installsitelib 2>/dev/null`; \
|
2001-06-12 14:49:55 +02:00
|
|
|
${ECHO} $${installsitelib}
|
2000-10-18 01:56:19 +02:00
|
|
|
PERL5_SITEARCH!= eval `${PERL5} -V:installsitearch 2>/dev/null`; \
|
2001-06-12 14:49:55 +02:00
|
|
|
${ECHO} $${installsitearch}
|
2000-10-18 01:56:19 +02:00
|
|
|
PERL5_ARCHLIB!= eval `${PERL5} -V:installarchlib 2>/dev/null`; \
|
2001-06-12 14:49:55 +02:00
|
|
|
${ECHO} $${installarchlib}
|
2003-09-13 01:33:07 +02:00
|
|
|
. endif # !exists(bsd.perl.mk)
|
|
|
|
. if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
|
|
|
_PERL5_PREFIX!= eval `${PERL5} -V:prefix 2>/dev/null`; \
|
|
|
|
${ECHO} $${prefix}
|
|
|
|
PERL5_SITELIB:= ${PERL5_SITELIB:S/^${_PERL5_PREFIX}/${LOCALBASE}/}
|
|
|
|
PERL5_SITEARCH:= ${PERL5_SITEARCH:S/^${_PERL5_PREFIX}/${LOCALBASE}/}
|
|
|
|
PERL5_ARCHLIB:= ${PERL5_ARCHLIB:S/^${_PERL5_PREFIX}/${LOCALBASE}/}
|
2004-02-06 19:45:02 +01:00
|
|
|
MAKEFLAGS+= PERL5_SITELIB=${PERL5_SITELIB:Q}
|
|
|
|
MAKEFLAGS+= PERL5_SITEARCH=${PERL5_SITEARCH:Q}
|
|
|
|
MAKEFLAGS+= PERL5_ARCHLIB=${PERL5_ARCHLIB:Q}
|
2003-09-13 01:33:07 +02:00
|
|
|
. endif # PKG_INSTALLATION_TYPE == "overwrite"
|
|
|
|
. endif # exists($PERL5)
|
|
|
|
. endif # !defined(PERL5_*)
|
|
|
|
.endif # USE_PERL5 == run
|
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
|
|
|
|
1999-11-23 00:42:21 +01:00
|
|
|
.if defined(USE_FORTRAN)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if !exists(/usr/bin/f77)
|
1999-11-23 00:42:21 +01:00
|
|
|
PKG_FC?= f2c-f77
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-11-23 00:42:21 +01:00
|
|
|
# it is anticipated that once /usr/bin/f77 is more stable that the following
|
|
|
|
# default will be changed to f77. However, in the case where there is no
|
|
|
|
# /usr/bin/f77, the default will remain as f2c-f77.
|
2002-05-19 05:42:14 +02:00
|
|
|
.for __tmp__ in 1.[5-9]* [2-9].*
|
|
|
|
. if ${MACHINE_PLATFORM:MNetBSD-${__tmp__}-*} != ""
|
|
|
|
PKG_FC?= f77
|
|
|
|
. endif # MACHINE_PLATFORM
|
|
|
|
.endfor # __tmp__
|
|
|
|
PKG_FC?= f2c-f77
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (${PKG_FC} == "f2c-f77")
|
2001-04-18 23:50:46 +02:00
|
|
|
# this is a DEPENDS not BUILD_DEPENDS because of the
|
|
|
|
# shared Fortran libs
|
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
|
|
|
. if !empty(USE_BUILDLINK3:M[yY][eE][sS])
|
2004-05-12 15:23:08 +02:00
|
|
|
. include "../../lang/f2c/buildlink3.mk"
|
2001-07-26 01:49:41 +02:00
|
|
|
. else
|
2002-04-29 08:43:34 +02:00
|
|
|
DEPENDS+= f2c>=20001205nb3:../../lang/f2c
|
2001-07-26 01:49:41 +02:00
|
|
|
. endif
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-11-23 00:42:21 +01:00
|
|
|
FC= ${PKG_FC}
|
|
|
|
F77= ${PKG_FC}
|
2001-02-02 05:53:31 +01:00
|
|
|
CONFIGURE_ENV+= F77="${F77}"
|
2004-02-14 03:28:19 +01:00
|
|
|
CONFIGURE_ENV+= FFLAGS="${FFLAGS:M*}"
|
1999-11-23 15:31:24 +01:00
|
|
|
MAKE_ENV+= F77="${F77}"
|
|
|
|
MAKE_ENV+= FC="${FC}"
|
1999-11-23 00:42:21 +01:00
|
|
|
.endif
|
|
|
|
|
2002-01-04 13:00:56 +01:00
|
|
|
# Automatically increase process limit where necessary for building.
|
|
|
|
_ULIMIT_CMD=
|
|
|
|
.if defined(UNLIMIT_RESOURCES)
|
2002-08-28 13:06:17 +02:00
|
|
|
. for __tmp__ in ${UNLIMIT_RESOURCES}
|
|
|
|
. if defined(ULIMIT_CMD_${__tmp__})
|
|
|
|
_ULIMIT_CMD+= ${ULIMIT_CMD_${__tmp__}} ;
|
|
|
|
. endif
|
|
|
|
. endfor
|
2002-01-04 13:00:56 +01:00
|
|
|
.endif
|
|
|
|
|
2002-06-02 02:40:18 +02:00
|
|
|
CPPFLAGS+= ${CPP_PRECOMP_FLAGS}
|
|
|
|
|
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-12-03 19:57:52 +01:00
|
|
|
CONFIGURE_ENV+= LIBS="${LIBS}"
|
2002-04-07 19:09:57 +02:00
|
|
|
CONFIG_SHELL?= ${SH}
|
|
|
|
CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL}
|
2004-04-23 04:03:18 +02:00
|
|
|
CONFIGURE_ENV+= install_sh=${INSTALL:Q}
|
2001-06-12 22:30:09 +02:00
|
|
|
.endif
|
|
|
|
|
2003-01-21 23:48:57 +01:00
|
|
|
.if defined(_OPSYS_LIBTOOL_REQD)
|
|
|
|
LIBTOOL_REQD= ${_OPSYS_LIBTOOL_REQD}
|
|
|
|
.else
|
2004-03-09 20:22:24 +01:00
|
|
|
LIBTOOL_REQD?= 1.5.2nb4
|
2003-01-21 23:48:57 +01:00
|
|
|
.endif
|
2004-02-09 02:30:59 +01:00
|
|
|
#
|
|
|
|
# PKG_LIBTOOL is the path to the libtool script installed by libtool-base.
|
|
|
|
# _LIBTOOL is the path the libtool used by the build, which could be the
|
2004-02-13 00:12:27 +01:00
|
|
|
# path to a libtool wrapper script.
|
2004-02-09 02:30:59 +01:00
|
|
|
# LIBTOOL is the publicly-readable variable that should be used by
|
|
|
|
# Makefiles to invoke the proper libtool.
|
|
|
|
#
|
2004-02-08 03:59:14 +01:00
|
|
|
PKG_LIBTOOL?= ${LOCALBASE}/bin/libtool
|
|
|
|
PKG_SHLIBTOOL?= ${LOCALBASE}/bin/shlibtool
|
2004-02-09 02:30:59 +01:00
|
|
|
_LIBTOOL?= ${PKG_LIBTOOL}
|
|
|
|
_SHLIBTOOL?= ${PKG_SHLIBTOOL}
|
2004-02-08 03:59:14 +01:00
|
|
|
LIBTOOL?= ${PKG_LIBTOOL}
|
|
|
|
SHLIBTOOL?= ${PKG_SHLIBTOOL}
|
2002-09-18 01:53:50 +02:00
|
|
|
.if defined(USE_LIBTOOL)
|
2001-08-27 17:05:54 +02:00
|
|
|
BUILD_DEPENDS+= libtool-base>=${LIBTOOL_REQD}:../../devel/libtool-base
|
2004-02-08 03:59:14 +01:00
|
|
|
CONFIGURE_ENV+= LIBTOOL="${LIBTOOL} ${LIBTOOL_FLAGS}"
|
|
|
|
MAKE_ENV+= LIBTOOL="${LIBTOOL} ${LIBTOOL_FLAGS}"
|
2004-02-14 18:18:49 +01:00
|
|
|
LIBTOOL_OVERRIDE?= libtool */libtool */*/libtool
|
2004-08-16 05:12:02 +02:00
|
|
|
.endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2002-01-05 23:46:18 +01:00
|
|
|
.if defined(BUILD_USES_MSGFMT) && \
|
2002-12-03 20:17:33 +01:00
|
|
|
(!exists(/usr/bin/msgfmt) || ${_USE_GNU_GETTEXT} == "yes")
|
2001-06-16 06:11:30 +02:00
|
|
|
BUILD_DEPENDS+= gettext>=0.10.35nb1:../../devel/gettext
|
|
|
|
.endif
|
|
|
|
|
- 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
|
|
|
EXTRACT_COOKIE= ${WRKDIR}/.extract_done
|
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= ${WRKDIR}/.wrapper_done
|
- 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
|
|
|
CONFIGURE_COOKIE= ${WRKDIR}/.configure_done
|
|
|
|
INSTALL_COOKIE= ${WRKDIR}/.install_done
|
2002-11-07 05:22:29 +01:00
|
|
|
TEST_COOKIE= ${WRKDIR}/.test_done
|
- 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
|
|
|
BUILD_COOKIE= ${WRKDIR}/.build_done
|
|
|
|
PATCH_COOKIE= ${WRKDIR}/.patch_done
|
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
|
|
|
TOOLS_COOKIE= ${WRKDIR}/.tools_done
|
- 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
|
|
|
PACKAGE_COOKIE= ${WRKDIR}/.package_done
|
2002-08-07 17:12:45 +02:00
|
|
|
INTERACTIVE_COOKIE= .interactive_stage
|
2002-05-14 14:47:48 +02:00
|
|
|
NULL_COOKIE= ${WRKDIR}/.null
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-03-06 15:50:45 +01:00
|
|
|
# New message digest defs
|
|
|
|
DIGEST_ALGORITHM?= SHA1
|
|
|
|
|
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
|
|
|
|
2001-04-17 11:07:01 +02:00
|
|
|
DISTINFO_FILE?= ${.CURDIR}/distinfo
|
|
|
|
|
2002-10-23 00:57:56 +02:00
|
|
|
.if defined(USE_X11)
|
2004-08-27 08:29:06 +02:00
|
|
|
X11_LDFLAGS+= ${COMPILER_RPATH_FLAG}${X11BASE}/lib${ABI}
|
2004-06-04 17:00:14 +02:00
|
|
|
X11_LDFLAGS+= -L${X11BASE}/lib${ABI}
|
2003-09-02 08:59:37 +02:00
|
|
|
.endif
|
2004-07-07 00:49:16 +02:00
|
|
|
.if !empty(USE_BUILDLINK3:M[nN][oO])
|
2004-08-27 08:29:06 +02:00
|
|
|
LDFLAGS+= ${COMPILER_RPATH_FLAG}${LOCALBASE}/lib
|
2003-09-02 08:59:37 +02:00
|
|
|
LDFLAGS+= -L${LOCALBASE}/lib
|
|
|
|
. if defined(USE_X11)
|
2002-09-23 10:35:12 +02:00
|
|
|
LDFLAGS+= ${X11_LDFLAGS}
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
1998-09-14 19:07:46 +02:00
|
|
|
.endif
|
|
|
|
MAKE_ENV+= LDFLAGS="${LDFLAGS}"
|
2004-08-27 08:29:06 +02:00
|
|
|
MAKE_ENV+= LINKER_RPATH_FLAG="${LINKER_RPATH_FLAG}"
|
|
|
|
MAKE_ENV+= COMPILER_RPATH_FLAG="${COMPILER_RPATH_FLAG}"
|
2003-04-15 07:29:45 +02:00
|
|
|
MAKE_ENV+= WHOLE_ARCHIVE_FLAG="${WHOLE_ARCHIVE_FLAG}"
|
|
|
|
MAKE_ENV+= NO_WHOLE_ARCHIVE_FLAG="${NO_WHOLE_ARCHIVE_FLAG}"
|
2003-06-06 21:30:47 +02:00
|
|
|
MAKE_ENV+= LINK_ALL_LIBGCC_HACK="${LINK_ALL_LIBGCC_HACK}"
|
2003-04-15 07:29:45 +02:00
|
|
|
|
2004-02-14 03:28:19 +01:00
|
|
|
CONFIGURE_ENV+= LDFLAGS="${LDFLAGS:M*}" M4="${M4}" YACC="${YACC}"
|
2004-08-27 08:29:06 +02:00
|
|
|
CONFIGURE_ENV+= LINKER_RPATH_FLAG="${LINKER_RPATH_FLAG}"
|
|
|
|
CONFIGURE_ENV+= COMPILER_RPATH_FLAG="${COMPILER_RPATH_FLAG}"
|
1998-09-14 19:07:46 +02:00
|
|
|
|
1998-06-10 10:02:08 +02:00
|
|
|
MAKE_FLAGS?=
|
1997-08-20 12:21:05 +02:00
|
|
|
MAKEFILE?= Makefile
|
2002-05-03 14:44:01 +02:00
|
|
|
MAKE_ENV+= PATH=${PATH}:${LOCALBASE}/bin:${X11BASE}/bin
|
|
|
|
MAKE_ENV+= PREFIX=${PREFIX} LOCALBASE=${LOCALBASE}
|
|
|
|
MAKE_ENV+= X11BASE=${X11BASE} CFLAGS="${CFLAGS}"
|
|
|
|
MAKE_ENV+= CPPFLAGS="${CPPFLAGS}" FFLAGS="${FFLAGS}"
|
|
|
|
MAKE_ENV+= X11PREFIX=${X11PREFIX}
|
2003-06-07 11:22:37 +02:00
|
|
|
.if defined(CC)
|
|
|
|
MAKE_ENV+= CC="${CC}"
|
|
|
|
.endif
|
2003-06-14 23:13:13 +02:00
|
|
|
.if defined(CXX)
|
|
|
|
MAKE_ENV+= CXX="${CXX}"
|
|
|
|
.endif
|
2003-08-04 23:06:47 +02:00
|
|
|
.if defined(CPP) && !defined(NO_EXPORT_CPP)
|
2003-06-14 23:13:13 +02:00
|
|
|
MAKE_ENV+= CPP="${CPP}"
|
|
|
|
.endif
|
2000-04-25 22:19:56 +02:00
|
|
|
|
2003-07-11 01:10:07 +02:00
|
|
|
# export the flags needed to compile and link pthreaded code
|
|
|
|
MAKE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}"
|
|
|
|
MAKE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}"
|
|
|
|
|
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
|
|
|
|
2004-03-31 12:00:43 +02:00
|
|
|
# determine if we need a working patch(1).
|
2004-05-19 05:26:09 +02:00
|
|
|
.if defined(_OPSYS_GPATCH_REQD) && !empty(_OPSYS_GPATCH_REQD:M[yY][eE][sS])
|
|
|
|
_NEED_PATCH= YES
|
|
|
|
.else
|
2003-10-11 07:09:39 +02:00
|
|
|
_NEED_PATCH!= if [ -d ${PATCHDIR} ]; then \
|
|
|
|
if [ "`${ECHO} ${PATCHDIR}/patch-*`" != "${PATCHDIR}/patch-*" ]; then \
|
|
|
|
${ECHO} YES; \
|
|
|
|
else \
|
|
|
|
${ECHO} NO; \
|
|
|
|
fi \
|
|
|
|
else \
|
|
|
|
${ECHO} NO; \
|
|
|
|
fi
|
2004-05-19 05:26:09 +02:00
|
|
|
.endif
|
|
|
|
|
2003-10-11 07:09:39 +02:00
|
|
|
.if defined(PATCHFILES)
|
|
|
|
_NEED_PATCH= YES
|
|
|
|
.endif
|
|
|
|
|
2004-01-29 11:22:01 +01:00
|
|
|
.if ${_NEED_PATCH} == "YES"
|
2004-01-29 10:38:10 +01:00
|
|
|
USE_GNU_TOOLS+= patch
|
2003-10-11 07:09:39 +02:00
|
|
|
.endif
|
|
|
|
|
1998-06-18 13:45:33 +02:00
|
|
|
.if defined(PATCH_DEBUG) || defined(PKG_VERBOSE)
|
1997-08-20 12:21:05 +02:00
|
|
|
PATCH_DEBUG_TMP= yes
|
|
|
|
.else
|
|
|
|
PATCH_DEBUG_TMP= no
|
2004-08-07 17:58:59 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
PATCH_STRIP?= -p0
|
|
|
|
.if ${PATCH_DEBUG_TMP} == "yes"
|
|
|
|
PATCH_ARGS?= -d ${WRKSRC} -E ${PATCH_STRIP}
|
|
|
|
.else
|
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
|
|
|
PATCH_ARGS?= -d ${WRKSRC} --forward --quiet -E ${PATCH_STRIP}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
.if defined(BATCH)
|
|
|
|
PATCH_ARGS+= --batch
|
|
|
|
.endif
|
2004-08-07 17:58:59 +02:00
|
|
|
.if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
|
2002-03-14 03:28:22 +01:00
|
|
|
PATCH_ARGS+= ${_PATCH_BACKUP_ARG} .orig
|
2002-12-02 18:07:27 +01:00
|
|
|
.endif
|
2004-08-07 17:58:59 +02:00
|
|
|
PATCH_FUZZ_FACTOR?= -F0 # Default to zero fuzz
|
|
|
|
|
|
|
|
# The following variables control how "distribution" patches are extracted
|
|
|
|
# and applied to the package sources.
|
|
|
|
#
|
|
|
|
# PATCH_DIST_STRIP is a patch option that sets the pathname strip count.
|
|
|
|
# PATCH_DIST_ARGS is the list of arguments to pass to the patch command.
|
|
|
|
# PATCH_DIST_CAT is the command that outputs the patch to stdout.
|
|
|
|
#
|
|
|
|
# For each of these variables, there is a patch-specific variant that
|
|
|
|
# may be set, i.e. PATCH_DIST_STRIP.<patch>, PATCH_DIST_ARGS.<patch>,
|
|
|
|
# PATCH_DIST_CAT.<patch>.
|
|
|
|
#
|
|
|
|
PATCH_DIST_STRIP?= -p0
|
|
|
|
.for i in ${PATCHFILES}
|
|
|
|
PATCH_DIST_STRIP.${i:S/=/--/}?= ${PATCH_DIST_STRIP}
|
|
|
|
. if defined(PATCH_DIST_ARGS)
|
|
|
|
PATCH_DIST_ARGS.${i:S/=/--/}?= ${PATCH_DIST_ARGS}
|
|
|
|
. elif ${PATCH_DEBUG_TMP} == "yes"
|
|
|
|
PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
|
|
|
|
. else
|
|
|
|
PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} --forward --quiet -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
.if defined(BATCH)
|
|
|
|
PATCH_DIST_ARGS+= --batch
|
|
|
|
. for i in ${PATCHFILES}
|
|
|
|
PATCH_DIST_ARGS.${i:S/=/--/}+= --batch
|
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
.if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
|
|
|
|
PATCH_DIST_ARGS+= ${_PATCH_BACKUP_ARG} .orig_dist
|
|
|
|
. for i in ${PATCHFILES}
|
|
|
|
PATCH_DIST_ARGS.${i:S/=/--/}+= ${_PATCH_BACKUP_ARG} .orig_dist
|
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
PATCH_DIST_CAT?= { case $$patchfile in \
|
|
|
|
*.Z|*.gz) ${GZCAT} $$patchfile ;; \
|
|
|
|
*.bz2) ${BZCAT} $$patchfile ;; \
|
|
|
|
*) ${CAT} $$patchfile ;; \
|
|
|
|
esac; }
|
|
|
|
.for i in ${PATCHFILES}
|
|
|
|
PATCH_DIST_CAT.${i:S/=/--/}?= { patchfile=${i}; ${PATCH_DIST_CAT}; }
|
|
|
|
.endfor
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2004-08-25 06:09:10 +02:00
|
|
|
.if empty(PKGSRC_SHOW_PATCH_ERRORMSG:M[yY][eE][sS])
|
|
|
|
PKGSRC_PATCH_FAIL= exit 1
|
|
|
|
.else
|
|
|
|
PKGSRC_PATCH_FAIL= \
|
2004-08-16 03:56:03 +02:00
|
|
|
if [ -n "${PKG_OPTIONS}" ] || [ -n "${_LOCALPATCHFILES}" ]; then \
|
|
|
|
${ECHO} "=========================================================================="; \
|
|
|
|
${ECHO}; \
|
|
|
|
${ECHO} "Some of the selected build options and/or local patches may be incompatible."; \
|
|
|
|
${ECHO} "Please try building with fewer options or patches."; \
|
|
|
|
${ECHO}; \
|
|
|
|
${ECHO} "=========================================================================="; \
|
|
|
|
fi; exit 1
|
2004-08-25 06:09:10 +02:00
|
|
|
.endif
|
2004-08-16 03:56:03 +02:00
|
|
|
|
1999-02-13 12:06:47 +01:00
|
|
|
EXTRACT_SUFX?= .tar.gz
|
1999-04-01 16:07:52 +02:00
|
|
|
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
# We need bzip2 for PATCHFILES with .bz2 suffix.
|
2000-05-17 05:32:43 +02:00
|
|
|
.if defined(PATCHFILES)
|
2004-09-01 02:10:58 +02:00
|
|
|
. if !empty(PATCHFILES:M*.bz2) && ${EXTRACT_SUFX} != ".tar.bz2"
|
2001-07-19 00:43:32 +02:00
|
|
|
. if exists(/usr/bin/bzcat)
|
2000-05-17 05:32:43 +02:00
|
|
|
BZCAT= /usr/bin/bzcat
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-05-17 05:32:43 +02:00
|
|
|
BZCAT= ${LOCALBASE}/bin/bzcat
|
2001-08-16 03:49:09 +02:00
|
|
|
BUILD_DEPENDS+= bzip2>=0.9.0b:../../archivers/bzip2
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # !exists bzcat
|
|
|
|
. endif
|
2000-05-17 05:32:43 +02:00
|
|
|
.endif # defined(PATCHFILES)
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Figure out where the local mtree file is
|
2004-07-04 00:07:11 +02:00
|
|
|
.if defined(USE_X11BASE)
|
|
|
|
MTREE_FILE?= ${_PKGSRCDIR}/mk/${OPSYS}.x11.dist
|
|
|
|
.else
|
|
|
|
MTREE_FILE?= ${_PKGSRCDIR}/mk/${OPSYS}.pkg.dist
|
|
|
|
.endif
|
1999-03-08 18:26:54 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
MTREE_ARGS?= -U -f ${MTREE_FILE} -d -e -p
|
|
|
|
|
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
|
|
|
|
|
2001-09-10 11:56:05 +02:00
|
|
|
WRKSRC?= ${WRKDIR}/${DISTNAME}
|
1998-09-15 19:05:04 +02:00
|
|
|
|
1998-03-08 15:55:04 +01:00
|
|
|
.if defined(NO_WRKSUBDIR)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='NO_WRKSUBDIR has been deprecated - please replace it with an explicit'
|
|
|
|
PKG_FAIL_REASON+='assignment of WRKSRC= $${WRKDIR}'
|
1998-07-03 21:27:39 +02:00
|
|
|
.endif # NO_WRKSUBDIR
|
1998-03-08 15:55:04 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# A few aliases for *-install targets
|
2004-04-23 03:21:12 +02:00
|
|
|
.if !defined(INSTALL_UNSTRIPPED) || empty(INSTALL_UNSTRIPPED:M[yY][eE][sS])
|
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}
|
2004-04-23 03:21:12 +02:00
|
|
|
.else
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_PROGRAM?= \
|
2004-04-23 03:21:12 +02:00
|
|
|
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
|
2004-05-12 03:03:58 +02:00
|
|
|
INSTALL_GAME?= \
|
|
|
|
${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE}
|
2004-04-23 03:21:12 +02:00
|
|
|
.endif
|
2004-05-12 03:03:58 +02:00
|
|
|
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}
|
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
|
|
|
|
2001-06-12 15:17:01 +02:00
|
|
|
INSTALL_MACROS= BSD_INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
|
|
|
|
BSD_INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
|
2004-04-28 00:35:47 +02:00
|
|
|
BSD_INSTALL_LIB="${INSTALL_LIB}" \
|
2001-06-12 15:17:01 +02:00
|
|
|
BSD_INSTALL_DATA="${INSTALL_DATA}" \
|
|
|
|
BSD_INSTALL_MAN="${INSTALL_MAN}" \
|
2002-12-11 22:01:05 +01:00
|
|
|
BSD_INSTALL="${INSTALL}" \
|
2001-06-12 15:17:01 +02:00
|
|
|
BSD_INSTALL_PROGRAM_DIR="${INSTALL_PROGRAM_DIR}" \
|
|
|
|
BSD_INSTALL_SCRIPT_DIR="${INSTALL_SCRIPT_DIR}" \
|
2004-04-28 00:35:47 +02:00
|
|
|
BSD_INSTALL_LIB_DIR="${INSTALL_LIB_DIR}" \
|
2001-06-12 15:17:01 +02:00
|
|
|
BSD_INSTALL_DATA_DIR="${INSTALL_DATA_DIR}" \
|
2004-05-12 03:37:42 +02:00
|
|
|
BSD_INSTALL_MAN_DIR="${INSTALL_MAN_DIR}" \
|
2004-08-04 04:56:01 +02:00
|
|
|
BSD_INSTALL_GAME="${INSTALL_GAME}" \
|
|
|
|
BSD_INSTALL_GAME_DATA="${INSTALL_GAME_DATA}"
|
1997-08-20 12:21:05 +02:00
|
|
|
MAKE_ENV+= ${INSTALL_MACROS}
|
|
|
|
SCRIPTS_ENV+= ${INSTALL_MACROS}
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2001-02-16 14:06:17 +01:00
|
|
|
.if !defined(COMMENT)
|
2004-04-07 16:26:50 +02:00
|
|
|
COMMENT!= (${CAT} ${PKGDIR}/COMMENT || ${ECHO_N} "(no description)") 2>/dev/null
|
2001-02-16 14:06:17 +01:00
|
|
|
.endif
|
|
|
|
|
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
|
|
|
DESCR= ${WRKDIR}/.DESCR
|
2001-11-09 09:58:19 +01:00
|
|
|
.if !defined(DESCR_SRC)
|
2000-12-30 12:19:04 +01:00
|
|
|
DESCR_SRC?= ${PKGDIR}/DESCR
|
2001-11-09 09:58:19 +01:00
|
|
|
.endif
|
1998-09-17 16:03:48 +02:00
|
|
|
PLIST= ${WRKDIR}/.PLIST
|
2002-12-25 13:24:57 +01:00
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PLIST_TYPE} == "static"
|
2003-01-04 16:52:13 +01:00
|
|
|
# Automatic platform dependent PLIST handling
|
2003-09-02 08:59:37 +02:00
|
|
|
. if !defined(PLIST_SRC)
|
|
|
|
. if exists(${PKGDIR}/PLIST.common)
|
2002-12-25 13:24:57 +01:00
|
|
|
PLIST_SRC= ${PKGDIR}/PLIST.common
|
2003-09-02 08:59:37 +02:00
|
|
|
. if exists(${PKGDIR}/PLIST.${OPSYS})
|
2002-12-25 13:24:57 +01:00
|
|
|
PLIST_SRC+= ${PKGDIR}/PLIST.${OPSYS}
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
|
|
|
. if exists(${PKGDIR}/PLIST.common_end)
|
2002-12-25 13:32:32 +01:00
|
|
|
PLIST_SRC+= ${PKGDIR}/PLIST.common_end
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
|
|
|
. elif exists(${PKGDIR}/PLIST.${OPSYS})
|
2002-12-25 13:24:57 +01:00
|
|
|
PLIST_SRC= ${PKGDIR}/PLIST.${OPSYS}
|
2003-09-02 08:59:37 +02:00
|
|
|
. else
|
2002-12-25 13:24:57 +01:00
|
|
|
PLIST_SRC= ${PKGDIR}/PLIST
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
2002-12-25 13:24:57 +01:00
|
|
|
. endif
|
2003-09-02 08:59:37 +02:00
|
|
|
_PLIST_SRC= ${PLIST_SRC}
|
|
|
|
.elif ${PLIST_TYPE} == "dynamic"
|
|
|
|
_PLIST_SRC= # empty, since we're using a dynamic PLIST
|
2001-11-09 09:58:19 +01:00
|
|
|
.endif
|
2002-12-25 13:24:57 +01:00
|
|
|
|
1999-08-30 00:13:01 +02:00
|
|
|
DLIST= ${WRKDIR}/.DLIST
|
|
|
|
DDIR= ${WRKDIR}/.DDIR
|
1998-09-17 16:03:48 +02:00
|
|
|
|
2000-12-30 12:19:04 +01:00
|
|
|
|
1999-09-03 04:43:51 +02:00
|
|
|
# Set PLIST_SUBST to substitute "${variable}" to "value" in PLIST
|
2000-08-27 04:15:49 +02:00
|
|
|
PLIST_SUBST+= OPSYS=${OPSYS} \
|
|
|
|
OS_VERSION=${OS_VERSION} \
|
|
|
|
MACHINE_ARCH=${MACHINE_ARCH} \
|
|
|
|
MACHINE_GNU_ARCH=${MACHINE_GNU_ARCH} \
|
|
|
|
MACHINE_GNU_PLATFORM=${MACHINE_GNU_PLATFORM} \
|
2002-07-14 01:27:54 +02:00
|
|
|
LN=${LN:Q} \
|
2000-08-27 04:15:49 +02:00
|
|
|
LOWER_VENDOR=${LOWER_VENDOR} \
|
|
|
|
LOWER_OPSYS=${LOWER_OPSYS} \
|
2001-12-12 13:31:14 +01:00
|
|
|
LOWER_OS_VERSION=${LOWER_OS_VERSION} \
|
2001-11-14 13:38:51 +01:00
|
|
|
PKGBASE=${PKGBASE} \
|
2002-03-15 11:05:56 +01:00
|
|
|
PKGNAME=${PKGNAME_NOREV} \
|
2001-09-24 13:02:49 +02:00
|
|
|
PKGLOCALEDIR=${PKGLOCALEDIR} \
|
|
|
|
PKGVERSION=${PKGVERSION:C/nb[0-9]*$//} \
|
2002-02-05 23:03:54 +01:00
|
|
|
LOCALBASE=${LOCALBASE} \
|
2003-11-23 08:31:18 +01:00
|
|
|
VIEWBASE=${VIEWBASE} \
|
2002-02-05 23:03:54 +01:00
|
|
|
X11BASE=${X11BASE} \
|
|
|
|
X11PREFIX=${X11PREFIX} \
|
2001-11-01 21:37:17 +01:00
|
|
|
SVR4_PKGNAME=${SVR4_PKGNAME} \
|
2001-11-03 05:58:15 +01:00
|
|
|
CHGRP=${CHGRP:Q} \
|
|
|
|
CHMOD=${CHMOD:Q} \
|
|
|
|
CHOWN=${CHOWN:Q} \
|
2001-11-01 21:37:17 +01:00
|
|
|
MKDIR=${MKDIR:Q} \
|
|
|
|
RMDIR=${RMDIR:Q} \
|
2002-02-15 11:12:28 +01:00
|
|
|
RM=${RM:Q} \
|
2002-01-21 18:31:02 +01:00
|
|
|
TRUE=${TRUE:Q} \
|
|
|
|
QMAILDIR=${QMAILDIR}
|
2000-08-29 20:48:11 +02:00
|
|
|
.if defined(PERL5_SITELIB)
|
|
|
|
PLIST_SUBST+= PERL5_SITELIB=${PERL5_SITELIB:S/^${LOCALBASE}\///}
|
|
|
|
.endif
|
|
|
|
.if defined(PERL5_SITEARCH)
|
|
|
|
PLIST_SUBST+= PERL5_SITEARCH=${PERL5_SITEARCH:S/^${LOCALBASE}\///}
|
|
|
|
.endif
|
|
|
|
.if defined(PERL5_ARCHLIB)
|
|
|
|
PLIST_SUBST+= PERL5_ARCHLIB=${PERL5_ARCHLIB:S/^${LOCALBASE}\///}
|
2000-08-29 00:43:07 +02:00
|
|
|
.endif
|
1999-08-31 11:20:21 +02:00
|
|
|
|
2003-08-31 00:57:05 +02:00
|
|
|
# Handle info files
|
|
|
|
#
|
2004-02-12 14:16:02 +01:00
|
|
|
INFO_FILES?= # default to no info files to handle
|
2003-08-31 00:57:05 +02:00
|
|
|
USE_MAKEINFO?= no # default to not using makeinfo
|
|
|
|
.if !empty(INFO_FILES) || empty(USE_MAKEINFO:M[nN][oO])
|
|
|
|
. include "../../mk/texinfo.mk"
|
|
|
|
.endif
|
|
|
|
|
2003-09-17 04:38:22 +02:00
|
|
|
# CONF_DEPENDS notes a dependency where the config directory for the
|
|
|
|
# package matches the dependency's config directory. CONF_DEPENDS is
|
|
|
|
# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews".
|
|
|
|
#
|
|
|
|
CONF_DEPENDS?= # empty
|
|
|
|
.if !empty(CONF_DEPENDS)
|
|
|
|
USE_PKGINSTALL= yes
|
|
|
|
.endif
|
|
|
|
|
2003-01-29 20:34:14 +01:00
|
|
|
.if defined(USE_PKGINSTALL) && !empty(USE_PKGINSTALL:M[yY][eE][sS])
|
|
|
|
. include "../../mk/bsd.pkg.install.mk"
|
|
|
|
.endif
|
|
|
|
|
1998-09-17 16:03:48 +02:00
|
|
|
# Set INSTALL_FILE to be the name of any INSTALL file
|
|
|
|
.if !defined(INSTALL_FILE) && exists(${PKGDIR}/INSTALL)
|
|
|
|
INSTALL_FILE= ${PKGDIR}/INSTALL
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Set DEINSTALL_FILE to be the name of any DEINSTALL file
|
|
|
|
.if !defined(DEINSTALL_FILE) && exists(${PKGDIR}/DEINSTALL)
|
|
|
|
DEINSTALL_FILE= ${PKGDIR}/DEINSTALL
|
|
|
|
.endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-11-14 22:04:43 +01:00
|
|
|
# If MESSAGE hasn't been defined, then set MESSAGE_SRC to be a space-separated
|
|
|
|
# list of files to be concatenated together to generate the MESSAGE file.
|
|
|
|
#
|
2002-12-05 06:41:39 +01:00
|
|
|
.if !defined(MESSAGE_SRC) && !defined(MESSAGE)
|
2002-12-07 17:03:12 +01:00
|
|
|
. if exists(${PKGDIR}/MESSAGE)
|
|
|
|
MESSAGE_SRC= ${PKGDIR}/MESSAGE
|
|
|
|
. else
|
|
|
|
. if exists(${PKGDIR}/MESSAGE.common)
|
2002-12-05 06:41:39 +01:00
|
|
|
MESSAGE_SRC= ${PKGDIR}/MESSAGE.common
|
2002-12-07 17:03:12 +01:00
|
|
|
. endif
|
|
|
|
. if exists(${PKGDIR}/MESSAGE.${OPSYS})
|
2002-12-05 06:41:39 +01:00
|
|
|
MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${OPSYS}
|
2002-12-07 17:03:12 +01:00
|
|
|
. endif
|
2003-04-03 18:55:09 +02:00
|
|
|
. if exists(${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g})
|
|
|
|
MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g}
|
|
|
|
. endif
|
2002-12-10 14:08:34 +01:00
|
|
|
. if exists(${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g})
|
|
|
|
MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
|
2002-12-07 17:03:12 +01:00
|
|
|
. endif
|
2002-12-05 06:41:39 +01:00
|
|
|
. endif
|
2001-01-29 12:34:21 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(MESSAGE_SRC)
|
|
|
|
MESSAGE= ${WRKDIR}/.MESSAGE
|
|
|
|
|
|
|
|
# Set MESSAGE_SUBST to substitute "${variable}" to "value" in MESSAGE
|
|
|
|
MESSAGE_SUBST+= PKGNAME=${PKGNAME} \
|
|
|
|
PREFIX=${PREFIX} \
|
|
|
|
LOCALBASE=${LOCALBASE} \
|
2003-11-23 08:31:18 +01:00
|
|
|
VIEWBASE=${VIEWBASE} \
|
2001-01-29 12:34:21 +01:00
|
|
|
X11PREFIX=${X11PREFIX} \
|
2002-01-10 03:51:30 +01:00
|
|
|
X11BASE=${X11BASE} \
|
2002-01-21 17:31:42 +01:00
|
|
|
PKG_SYSCONFDIR=${PKG_SYSCONFDIR} \
|
2002-10-08 13:01:50 +02:00
|
|
|
ROOT_GROUP=${ROOT_GROUP} \
|
|
|
|
ROOT_USER=${ROOT_USER} \
|
2002-01-21 17:31:42 +01:00
|
|
|
QMAILDIR=${QMAILDIR}
|
2001-11-14 22:04:43 +01:00
|
|
|
|
|
|
|
MESSAGE_SUBST_SED= ${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/}
|
1998-09-17 17:47:08 +02:00
|
|
|
.endif
|
|
|
|
|
2004-03-22 05:07:15 +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. _PKGSRC_BUILD_TARGETS is used in the "all",
|
|
|
|
# "install", and "uptodate-digest" targets.
|
|
|
|
#
|
|
|
|
.if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
|
|
|
|
_PKGSRC_BUILD_TARGETS= build test
|
|
|
|
.else
|
|
|
|
_PKGSRC_BUILD_TARGETS= build
|
|
|
|
.endif
|
|
|
|
|
2001-03-06 15:50:45 +01:00
|
|
|
# Latest version of digest(1) required for pkgsrc
|
|
|
|
DIGEST_REQD= 20010302
|
|
|
|
|
2004-03-13 21:54:16 +01:00
|
|
|
USE_DIGEST?= yes
|
|
|
|
|
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 \
|
|
|
|
{ cd ${_PKGSRCDIR}/pkgtools/digest; \
|
|
|
|
${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
|
|
|
|
2003-04-17 17:33:26 +02:00
|
|
|
# Latest version of pkgtools required for correct pkgsrc operation.
|
|
|
|
.if defined(_OPSYS_PKGTOOLS_REQD)
|
|
|
|
PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD}
|
|
|
|
.else
|
2003-11-02 15:36:46 +01:00
|
|
|
PKGTOOLS_REQD= 20030918
|
2003-04-17 17:33:26 +02:00
|
|
|
.endif
|
2000-01-09 05:43:20 +01:00
|
|
|
|
2001-03-23 17:02:23 +01:00
|
|
|
# Check that we are using up-to-date pkg_* tools with this file.
|
2004-02-14 04:26:09 +01:00
|
|
|
.PHONY: uptodate-pkgtools
|
2000-01-09 05:43:20 +01:00
|
|
|
uptodate-pkgtools:
|
2003-01-09 14:16:38 +01:00
|
|
|
. if !defined(NO_PKGTOOLS_REQD_CHECK)
|
|
|
|
. if ${PKGTOOLS_VERSION} < ${PKGTOOLS_REQD}
|
2003-12-09 14:14:02 +01:00
|
|
|
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+=''
|
2003-09-14 17:32:30 +02:00
|
|
|
PKG_FAIL_REASON+=' cd ${_PKGSRCDIR}/pkgtools/pkg_install && ${MAKE} clean && ${MAKE} install'
|
2003-01-09 14:16:38 +01:00
|
|
|
. endif
|
|
|
|
. endif
|
2000-01-09 05:43:20 +01:00
|
|
|
|
|
|
|
# Files to create for versioning and build information
|
|
|
|
BUILD_VERSION_FILE= ${WRKDIR}/.build_version
|
|
|
|
BUILD_INFO_FILE= ${WRKDIR}/.build_info
|
|
|
|
|
|
|
|
# Files containing size of pkg w/o and w/ all required pkgs
|
2000-06-27 01:53:33 +02:00
|
|
|
SIZE_PKG_FILE= ${WRKDIR}/.SizePkg
|
|
|
|
SIZE_ALL_FILE= ${WRKDIR}/.SizeAll
|
2000-01-09 05:43:20 +01:00
|
|
|
|
2003-01-10 12:57:09 +01:00
|
|
|
# File to denote "no deletion of a package"
|
|
|
|
PRESERVE_FILE= ${WRKDIR}/.PRESERVE
|
|
|
|
|
2001-01-29 02:56:51 +01:00
|
|
|
.ifndef PKG_ARGS_COMMON
|
2002-10-28 19:53:37 +01:00
|
|
|
PKG_ARGS_COMMON= -v -c -${COMMENT:Q}" " -d ${DESCR} -f ${PLIST}
|
2001-02-16 14:06:17 +01:00
|
|
|
PKG_ARGS_COMMON+= -l -b ${BUILD_VERSION_FILE} -B ${BUILD_INFO_FILE}
|
2001-01-29 02:56:51 +01:00
|
|
|
PKG_ARGS_COMMON+= -s ${SIZE_PKG_FILE} -S ${SIZE_ALL_FILE}
|
2004-04-02 21:09:18 +02:00
|
|
|
PKG_ARGS_COMMON+= -P "`${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`"
|
2003-11-25 13:01:31 +01:00
|
|
|
. if defined(CONFLICTS) && (${PKG_INSTALLATION_TYPE} == "overwrite")
|
2001-01-29 02:56:51 +01:00
|
|
|
PKG_ARGS_COMMON+= -C "${CONFLICTS}"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. ifdef INSTALL_FILE
|
2001-01-29 02:56:51 +01:00
|
|
|
PKG_ARGS_COMMON+= -i ${INSTALL_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. ifdef DEINSTALL_FILE
|
2001-01-29 02:56:51 +01:00
|
|
|
PKG_ARGS_COMMON+= -k ${DEINSTALL_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. ifdef MESSAGE
|
2001-01-29 12:34:21 +01:00
|
|
|
PKG_ARGS_COMMON+= -D ${MESSAGE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. ifndef NO_MTREE
|
2001-01-29 02:56:51 +01:00
|
|
|
PKG_ARGS_COMMON+= -m ${MTREE_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2003-01-10 12:57:09 +01:00
|
|
|
. ifdef PKG_PRESERVE
|
|
|
|
PKG_ARGS_COMMON+= -n ${PRESERVE_FILE}
|
|
|
|
. endif
|
2001-01-29 02:56:51 +01:00
|
|
|
|
|
|
|
PKG_ARGS_INSTALL= -p ${PREFIX} ${PKG_ARGS_COMMON}
|
2001-03-30 00:08:21 +02:00
|
|
|
PKG_ARGS_BINPKG= -p ${PREFIX:S/^${DESTDIR}//} -L ${PREFIX} ${PKG_ARGS_COMMON}
|
2001-01-29 02:56:51 +01:00
|
|
|
.endif # !PKG_ARGS_COMMON
|
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
PKG_ARGS_INSTALL+= -U # don't update the pkgdb.byfile.db
|
|
|
|
PKG_ARGS_BINPKG+= -E # create an empty views file in the binpkg
|
|
|
|
.endif
|
|
|
|
|
2000-01-09 05:43:20 +01:00
|
|
|
PKG_SUFX?= .tgz
|
|
|
|
|
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.
|
2000-03-13 15:19:15 +01:00
|
|
|
.ifdef SMART_MESSAGES
|
|
|
|
_PKGSRC_IN?= ===> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===
|
|
|
|
.else
|
|
|
|
_PKGSRC_IN?= ===
|
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Used to print all the '===>' style prompts - override this to turn them off.
|
|
|
|
ECHO_MSG?= ${ECHO}
|
|
|
|
|
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
|
|
|
ALL_TARGET?= all
|
|
|
|
INSTALL_TARGET?= install
|
|
|
|
|
1997-11-05 14:36:31 +01:00
|
|
|
.if defined(USE_IMAKE) && !defined(NO_INSTALL_MANPAGES)
|
|
|
|
INSTALL_TARGET+= install.man
|
|
|
|
.endif
|
|
|
|
|
1998-05-29 11:21:43 +02:00
|
|
|
# If this host is behind a filtering firewall, use passive ftp(1)
|
|
|
|
.if defined(PASSIVE_FETCH)
|
|
|
|
FETCH_BEFORE_ARGS += -p
|
|
|
|
.endif
|
|
|
|
|
2003-03-30 07:06:49 +02:00
|
|
|
# Check if we got "rman" with XFree86, for packages that need "rman".
|
2001-03-20 01:04:15 +01:00
|
|
|
.if defined(USE_RMAN)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if !exists(${X11BASE}/bin/rman)
|
2001-03-20 01:04:15 +01:00
|
|
|
DEPENDS+= rman-3.0.9:../../textproc/rman
|
|
|
|
RMAN?= ${LOCALBASE}/bin/rman
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2001-03-20 01:04:15 +01:00
|
|
|
RMAN?= ${X11BASE}/bin/rman
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2001-03-20 01:04:15 +01:00
|
|
|
.endif
|
|
|
|
|
2002-10-13 11:38:58 +02:00
|
|
|
.if defined(EVAL_PREFIX)
|
|
|
|
. for def in ${EVAL_PREFIX}
|
|
|
|
. if !defined(${def:C/=.*//}_DEFAULT)
|
|
|
|
${def:C/=.*//}_DEFAULT= ${X11PREFIX}
|
|
|
|
. endif
|
|
|
|
. if !defined(${def:C/=.*//})
|
|
|
|
_depend_${def:C/=.*//} != ${PKG_INFO} -e ${def:C/.*=//} 2>/dev/null; ${ECHO}
|
|
|
|
. if (${_depend_${def:C/=.*//}} == "")
|
|
|
|
${def:C/=.*//}=${${def:C/=.*//}_DEFAULT}
|
|
|
|
. else
|
|
|
|
_dir_${def:C/=.*//} != (${PKG_INFO} -qp ${def:C/.*=//} 2>/dev/null) | ${AWK} '{ print $$2; exit }'
|
|
|
|
${def:C/=.*//}=${_dir_${def:C/=.*//}}
|
|
|
|
MAKEFLAGS+= ${def:C/=.*//}=${_dir_${def:C/=.*//}}
|
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Set the CLASSPATH for Java packages. This must come after EVAL_PREFIX
|
|
|
|
# is evaluated because PKG_JAVA_HOME is used in a .if.endif conditional,
|
2004-01-20 23:15:21 +01:00
|
|
|
# and its value is indirectly set by EVAL_PREFIX.
|
2002-10-13 11:38:58 +02:00
|
|
|
#
|
|
|
|
.if defined(USE_JAVA)
|
2003-01-29 10:34:29 +01:00
|
|
|
. if exists(${PKG_JAVA_HOME}/lib/${_JAVA_BASE_CLASSES})
|
|
|
|
_JAVA_CLASSES_ZIP= ${PKG_JAVA_HOME}/lib/${_JAVA_BASE_CLASSES}:
|
2002-10-13 11:38:58 +02:00
|
|
|
. endif
|
|
|
|
. if exists(${PKG_JAVA_HOME}/lib/tools.jar)
|
|
|
|
_JAVA_TOOLS_JAR= ${PKG_JAVA_HOME}/lib/tools.jar:
|
|
|
|
. endif
|
|
|
|
CLASSPATH?= ${_JAVA_CLASSES_ZIP}${_JAVA_TOOLS_JAR}.
|
|
|
|
|
|
|
|
MAKE_ENV+= CLASSPATH=${CLASSPATH}
|
|
|
|
CONFIGURE_ENV+= CLASSPATH=${CLASSPATH}
|
|
|
|
SCRIPTS_ENV+= CLASSPATH=${CLASSPATH}
|
|
|
|
.endif
|
|
|
|
|
2004-06-04 15:45:26 +02:00
|
|
|
# Include popular master sites
|
|
|
|
.include "../../mk/bsd.sites.mk"
|
|
|
|
|
1999-11-20 22:15:49 +01:00
|
|
|
.if defined(DIST_SUBDIR)
|
2000-07-26 14:36:49 +02:00
|
|
|
_MASTER_SITE_BACKUP:= ${MASTER_SITE_BACKUP:=${DIST_SUBDIR}/}
|
|
|
|
. if defined(MASTER_SITE_OVERRIDE)
|
|
|
|
_MASTER_SITE_OVERRIDE:= ${MASTER_SITE_OVERRIDE:=${DIST_SUBDIR}/}
|
|
|
|
. endif # MASTER_SITE_OVERRIDE
|
|
|
|
.else # !DIST_SUBDIR
|
|
|
|
_MASTER_SITE_BACKUP:= ${MASTER_SITE_BACKUP}
|
|
|
|
. if defined(MASTER_SITE_OVERRIDE)
|
|
|
|
_MASTER_SITE_OVERRIDE:= ${MASTER_SITE_OVERRIDE}
|
|
|
|
. endif # MASTER_SITE_OVERRIDE
|
2000-02-25 06:46:27 +01:00
|
|
|
.endif # DIST_SUBDIR
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
# Where to put distfiles that don't have any other master site
|
|
|
|
MASTER_SITE_LOCAL?= \
|
2002-08-11 11:59:43 +02:00
|
|
|
${MASTER_SITE_BACKUP:=LOCAL_PORTS/} \
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
# Derived names so that they're easily overridable.
|
|
|
|
DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
|
|
|
|
|
2004-02-25 10:24:52 +01:00
|
|
|
MAINTAINER?= tech-pkg@NetBSD.org
|
1998-08-06 11:51:20 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
ALLFILES?= ${DISTFILES} ${PATCHFILES}
|
1999-05-21 21:29:02 +02:00
|
|
|
CKSUMFILES?= ${ALLFILES}
|
|
|
|
.for __tmp__ in ${IGNOREFILES}
|
|
|
|
CKSUMFILES:= ${CKSUMFILES:N${__tmp__}}
|
|
|
|
.endfor
|
1997-08-20 12:21:05 +02:00
|
|
|
|
1998-08-15 00:10:53 +02:00
|
|
|
# List of all files, with ${DIST_SUBDIR} in front. Used for fetch and checksum.
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(DIST_SUBDIR)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if ${CKSUMFILES} != ""
|
1997-08-20 12:21:05 +02:00
|
|
|
_CKSUMFILES?= ${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2003-12-06 19:47:45 +01:00
|
|
|
. if !empty(DISTFILES)
|
1998-08-15 00:10:53 +02:00
|
|
|
_DISTFILES?= ${DISTFILES:S/^/${DIST_SUBDIR}\//}
|
2003-12-06 19:47:45 +01:00
|
|
|
. else
|
|
|
|
_DISTFILES?= # empty
|
|
|
|
. endif
|
|
|
|
. if defined(IGNOREFILES) && !empty(IGNOREFILES)
|
1997-08-20 12:21:05 +02:00
|
|
|
_IGNOREFILES?= ${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
|
2003-12-06 19:47:45 +01:00
|
|
|
. endif
|
|
|
|
. if defined(PATCHFILES) && !empty(PATCHFILES)
|
1998-08-15 00:10:53 +02:00
|
|
|
_PATCHFILES?= ${PATCHFILES:S/^/${DIST_SUBDIR}\//}
|
2003-12-06 19:47:45 +01:00
|
|
|
. else
|
|
|
|
_PATCHFILES?= # empty
|
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.else
|
|
|
|
_CKSUMFILES?= ${CKSUMFILES}
|
1998-08-15 00:10:53 +02:00
|
|
|
_DISTFILES?= ${DISTFILES}
|
1997-08-20 12:21:05 +02:00
|
|
|
_IGNOREFILES?= ${IGNOREFILES}
|
1998-08-15 00:10:53 +02:00
|
|
|
_PATCHFILES?= ${PATCHFILES}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
_ALLFILES?= ${_DISTFILES} ${_PATCHFILES}
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
# This is what is actually going to be extracted, and is overridable
|
2004-03-31 12:07:47 +02:00
|
|
|
# by user.
|
1997-08-20 12:21:05 +02:00
|
|
|
EXTRACT_ONLY?= ${DISTFILES}
|
|
|
|
|
1998-08-06 11:51:20 +02:00
|
|
|
.if !defined(CATEGORIES) || !defined(DISTNAME)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='CATEGORIES and DISTNAME are mandatory.'
|
1998-01-25 15:39:49 +01:00
|
|
|
.endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
1998-08-05 21:25:08 +02:00
|
|
|
.if defined(LIB_DEPENDS)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='LIB_DEPENDS is deprecated and must be replaced with DEPENDS.'
|
1999-04-15 22:39:38 +02:00
|
|
|
.endif
|
|
|
|
|
2000-11-11 20:13:41 +01:00
|
|
|
.if defined(PKG_PATH)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!'
|
2000-11-11 20:13:41 +01:00
|
|
|
.endif
|
|
|
|
|
1999-04-15 22:39:38 +02:00
|
|
|
.if defined(MASTER_SITE_SUBDIR)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='MASTER_SITE_SUBDIR is deprecated and must be replaced with MASTER_SITES.'
|
1999-04-15 22:39:38 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(PATCH_SITE_SUBDIR)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='PATCH_SITE_SUBDIR is deprecated and must be replaced with PATCH_SITES.'
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1999-05-24 22:39:35 +02:00
|
|
|
.if defined(ONLY_FOR_ARCHS) || defined(NOT_FOR_ARCHS) \
|
|
|
|
|| defined(ONLY_FOR_OPSYS) || defined(NOT_FOR_OPSYS)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPSYS are deprecated and must be replaced with ONLY/NOT_FOR_PLATFORM.'
|
1999-05-24 22:39:35 +02:00
|
|
|
.endif
|
|
|
|
|
2003-01-09 14:16:38 +01:00
|
|
|
.if (${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once")
|
2003-03-30 07:06:49 +02:00
|
|
|
. if !defined(OBJHOSTNAME)
|
2003-01-09 14:16:38 +01:00
|
|
|
PKG_FAIL_REASON+='PKGSRC_LOCKTYPE needs OBJHOSTNAME defined.'
|
|
|
|
. elif !exists(${SHLOCK})
|
|
|
|
PKG_FAIL_REASON+='The ${SHLOCK} utility does not exist, and is necessary for locking.'
|
|
|
|
PKG_FAIL_REASON+='Please "${MAKE} install" in ../../pkgtools/shlock.'
|
|
|
|
. endif
|
2002-01-19 22:29:41 +01:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
PKGREPOSITORYSUBDIR?= All
|
|
|
|
PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR}
|
|
|
|
PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX}
|
|
|
|
|
2002-08-22 10:21:26 +02:00
|
|
|
CONFIGURE_DIRS?= ${WRKSRC}
|
2000-03-27 10:43:05 +02:00
|
|
|
CONFIGURE_SCRIPT?= ./configure
|
1998-01-15 23:58:59 +01:00
|
|
|
CONFIGURE_ENV+= PATH=${PATH}:${LOCALBASE}/bin:${X11BASE}/bin
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
.if defined(GNU_CONFIGURE)
|
2002-06-23 05:15:28 +02:00
|
|
|
#
|
2004-01-31 08:07:33 +01:00
|
|
|
# GNU_CONFIGURE_PREFIX is the argument to the --prefix option passed to the
|
2002-06-23 05:15:28 +02:00
|
|
|
# GNU configure script.
|
|
|
|
#
|
|
|
|
GNU_CONFIGURE_PREFIX?= ${PREFIX}
|
|
|
|
CONFIGURE_ARGS+= --host=${MACHINE_GNU_PLATFORM}
|
|
|
|
CONFIGURE_ARGS+= --prefix=${GNU_CONFIGURE_PREFIX}
|
1997-08-20 12:21:05 +02:00
|
|
|
HAS_CONFIGURE= yes
|
2004-02-12 16:34:18 +01:00
|
|
|
. if defined(USE_X11)
|
2002-10-23 00:57:56 +02:00
|
|
|
CONFIGURE_ARGS+= --x-includes=${X11BASE}/include
|
2004-06-04 17:00:14 +02:00
|
|
|
CONFIGURE_ARGS+= --x-libraries=${X11BASE}/lib${ABI}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2004-05-08 18:14:55 +02:00
|
|
|
CONFIGURE_HAS_INFODIR?= yes
|
|
|
|
. if !empty(INFO_FILES) && !empty(CONFIGURE_HAS_INFODIR:M[yY][eE][sS])
|
2004-05-08 04:13:00 +02:00
|
|
|
CONFIGURE_ARGS+= --infodir=${PREFIX}/${INFO_DIR}
|
|
|
|
. 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
|
2004-02-14 14:54:28 +01:00
|
|
|
#
|
|
|
|
# By default, override config.status for GNU configure packages. We
|
|
|
|
# never want it to execute after the configure phase has ended as it
|
|
|
|
# might overwrite any post-configure changes we might have made to the
|
|
|
|
# generated files.
|
|
|
|
#
|
|
|
|
CONFIG_STATUS_OVERRIDE?= \
|
|
|
|
config.status */config.status */*/config.status
|
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
|
|
|
#
|
2002-05-23 01:15:22 +02:00
|
|
|
# Config file related settings - see Packages.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}
|
2004-03-29 08:49:04 +02:00
|
|
|
. if !empty(CONF_DEPENDS)
|
|
|
|
_PLIST_IGNORE_FILES+= ${PKG_SYSCONFDIR:S,^${PREFIX}/,,}
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
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
|
2001-11-28 20:55:31 +01:00
|
|
|
|
|
|
|
CONFIGURE_ENV+= PKG_SYSCONFDIR="${PKG_SYSCONFDIR}"
|
|
|
|
MAKE_ENV+= PKG_SYSCONFDIR="${PKG_SYSCONFDIR}"
|
2003-09-17 04:38:22 +02:00
|
|
|
BUILD_DEFS+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR
|
2001-11-28 20:55:31 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Passed to most of script invocations
|
1998-01-15 23:58:59 +01:00
|
|
|
SCRIPTS_ENV+= CURDIR=${.CURDIR} DISTDIR=${DISTDIR} \
|
1998-06-05 14:45:53 +02:00
|
|
|
PATH=${PATH}:${LOCALBASE}/bin:${X11BASE}/bin \
|
|
|
|
WRKDIR=${WRKDIR} WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} \
|
|
|
|
SCRIPTDIR=${SCRIPTDIR} FILESDIR=${FILESDIR} \
|
2001-12-15 21:25:34 +01:00
|
|
|
_PKGSRCDIR=${_PKGSRCDIR} DEPENDS="${DEPENDS}" \
|
2004-04-18 00:37:14 +02:00
|
|
|
PREFIX=${PREFIX} LOCALBASE=${LOCALBASE} X11BASE=${X11BASE} \
|
|
|
|
VIEWBASE=${VIEWBASE}
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
.if defined(BATCH)
|
|
|
|
SCRIPTS_ENV+= BATCH=yes
|
|
|
|
.endif
|
|
|
|
|
2004-03-31 12:14:22 +02:00
|
|
|
# If NO_BUILD is defined, default to not needing a compiler.
|
|
|
|
.if defined(NO_BUILD)
|
|
|
|
USE_LANGUAGES?= # empty
|
|
|
|
.endif
|
|
|
|
|
2004-02-05 04:37:47 +01:00
|
|
|
# Get the proper dependencies and set the PATH to use the compiler
|
|
|
|
# named in PKGSRC_COMPILER.
|
|
|
|
#
|
2004-02-18 14:32:38 +01:00
|
|
|
.include "../../mk/compiler.mk"
|
2004-02-05 04:37:47 +01:00
|
|
|
|
2004-04-27 21:23:34 +02:00
|
|
|
.include "../../mk/tools.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
|
|
|
.if !defined(NO_WRAPPER)
|
|
|
|
. include "../../mk/wrapper/bsd.wrapper.mk"
|
2002-08-22 10:21:26 +02:00
|
|
|
.endif
|
|
|
|
|
2004-08-24 02:27:13 +02:00
|
|
|
.if defined(RECOMMENDED)
|
|
|
|
. if !empty(IGNORE_RECOMMENDED:M[nN][oO])
|
|
|
|
DEPENDS+= ${RECOMMENDED}
|
|
|
|
. else
|
|
|
|
BUILD_DEFS+= IGNORE_RECOMMENDED
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2004-04-14 22:15:59 +02:00
|
|
|
.if defined(USE_DIRS) && !empty(USE_DIRS) && \
|
|
|
|
${PKG_INSTALLATION_TYPE} == "overwrite"
|
Rework the way to use the -dirs packages (ATM, xdg-dirs, xdg-x11-dirs,
gnome1-dirs and gnome2-dirs):
- Introduce a global USE_DIRS variable, which takes pairs of names and
versions. For example, an xdg-1.1 value will request the use of the
xdg-dirs package, at least version 1.1. This variable must always be
appended to. If there are duplicates with different versions, the
one with the higher number will be picked up.
- Introduce the mk/dirs.mk file, which is automatically included by
bsd.pkg.mk when USE_DIRS is not empty. It parses the variable's value
and includes the required dirs.mk files, present in each -dirs package.
- For each -dirs package, add a dirs.mk file that defines a variable
holding the list of directories provided by it, adds a dependency on
that package, and modifies the PRINT_PLIST_AWK variable to output
comments for the directories handled by it.
- Drop some Makefile.common files that only make things difficult and
more confusing now (in favour of the new dirs.mk files). The only thing
to worry about is to keep version numbers consistent across xdg-* and
gnome*-* packages, but that will be easier to handle.
The main reason for this change is to be able to modify PRINT_PLIST_AWK in
a clean way, but I hope this will improve clarity too. Also, this simplifies
the addition of future -dirs packages (if needed) in a consistent way.
2004-04-14 17:26:41 +02:00
|
|
|
. include "../../mk/dirs.mk"
|
|
|
|
.endif
|
|
|
|
|
2004-02-18 14:32:38 +01:00
|
|
|
_PREPENDED_TO_PATH?= # empty
|
|
|
|
.for _dir_ in ${PREPEND_PATH}
|
|
|
|
. if empty(_PREPENDED_TO_PATH:M${_dir_})
|
|
|
|
_PREPENDED_TO_PATH+= ${_dir_}
|
|
|
|
PATH:= ${_dir_}:${PATH}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
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.
|
|
|
|
#
|
|
|
|
BUILD_ENV+= PATH=${PATH:Q}
|
|
|
|
BUILD_ENV+= _PREPENDED_TO_PATH=${_PREPENDED_TO_PATH:Q}
|
2004-02-06 04:04:50 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
.MAIN: all
|
|
|
|
|
1998-07-14 13:36:11 +02:00
|
|
|
# Use aliases, so that all versions of English are acceptable
|
|
|
|
.if defined(LICENCE) && !defined(LICENSE)
|
|
|
|
LICENSE= ${LICENCE}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(ACCEPTABLE_LICENCES) && !defined(ACCEPTABLE_LICENSES)
|
|
|
|
ACCEPTABLE_LICENSES= ${ACCEPTABLE_LICENCES}
|
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
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)
|
|
|
|
. ifdef ACCEPTABLE_LICENSES
|
|
|
|
. for _lic in ${ACCEPTABLE_LICENSES}
|
|
|
|
. if ${LICENSE} == "${_lic}"
|
1998-07-06 17:10:48 +02:00
|
|
|
_ACCEPTABLE= yes
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # LICENSE == _lic
|
|
|
|
. endfor # _lic
|
|
|
|
. endif # ACCEPTABLE_LICENSES
|
|
|
|
. ifndef _ACCEPTABLE
|
2002-12-07 03:37:56 +01:00
|
|
|
PKG_FAIL_REASON+= "${PKGNAME} has an unacceptable license: ${LICENSE}." \
|
2000-08-19 17:32:15 +02:00
|
|
|
" To build this package, add this line to your /etc/mk.conf:" \
|
2003-05-19 08:02:10 +02:00
|
|
|
" ACCEPTABLE_LICENSES+=${LICENSE}" \
|
2004-04-03 08:22:39 +02:00
|
|
|
" To view the license, enter \"${MAKE} show-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)
|
2001-06-19 13:54:56 +02:00
|
|
|
fetch checksum extract patch configure all build install package \
|
2002-04-06 01:26:49 +02:00
|
|
|
update install-depends:
|
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
|
2002-12-07 03:37:56 +01:00
|
|
|
@for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON} ; \
|
2000-08-19 17:32:15 +02:00
|
|
|
do \
|
|
|
|
${ECHO} "${_PKGSRC_IN}> $$str" ; \
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
.if !defined(DEPENDS_TARGET)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if make(package)
|
2000-04-24 05:40:50 +02:00
|
|
|
DEPENDS_TARGET= package
|
2001-07-19 00:43:32 +02:00
|
|
|
. elif make(update)
|
2003-05-04 04:59:15 +02:00
|
|
|
. if defined(UPDATE_TARGET) && ${UPDATE_TARGET} == "replace"
|
|
|
|
DEPENDS_TARGET= ${UPDATE_TARGET}
|
|
|
|
. else
|
2000-10-22 10:22:24 +02:00
|
|
|
DEPENDS_TARGET= update
|
2003-05-04 04:59:15 +02:00
|
|
|
. endif
|
2002-04-25 23:58:55 +02:00
|
|
|
. elif make(bin-install)
|
|
|
|
DEPENDS_TARGET= bin-install
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-07-20 00:57:31 +02:00
|
|
|
DEPENDS_TARGET= reinstall
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-09-28 02:44:15 +02:00
|
|
|
.endif
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2000-10-22 10:22:24 +02:00
|
|
|
.if !defined(UPDATE_TARGET)
|
2001-07-19 00:43:32 +02:00
|
|
|
. if ${DEPENDS_TARGET} == "update"
|
|
|
|
. if make(package)
|
2000-10-22 10:22:24 +02:00
|
|
|
UPDATE_TARGET= package
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-10-22 10:22:24 +02:00
|
|
|
UPDATE_TARGET= install
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. else
|
2000-10-22 10:22:24 +02:00
|
|
|
UPDATE_TARGET= ${DEPENDS_TARGET}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-10-22 10:22:24 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
# 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
|
2003-09-13 16:40:40 +02:00
|
|
|
.if (defined(NO_CHECKSUM) || exists(${EXTRACT_COOKIE})) && !target(checksum)
|
1997-08-20 12:21:05 +02:00
|
|
|
checksum: fetch
|
|
|
|
@${DO_NADA}
|
|
|
|
.endif
|
|
|
|
|
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
|
|
|
# Disable tools
|
|
|
|
.PHONY: tools
|
|
|
|
.if defined(NO_TOOLS) && !target(tools)
|
|
|
|
tools: patch
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${TOOLS_COOKIE}
|
|
|
|
.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
|
|
|
|
.if defined(NO_WRAPPER) && !target(wrapper)
|
|
|
|
wrapper: tools
|
|
|
|
${_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
|
1999-03-08 18:26:54 +01: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
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(NO_BUILD) && !target(build)
|
|
|
|
build: configure
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${BUILD_COOKIE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Disable install
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: install
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(NO_INSTALL) && !target(install)
|
|
|
|
install: build
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Disable package
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: package
|
1997-08-20 12:21:05 +02:00
|
|
|
.if defined(NO_PACKAGE) && !target(package)
|
|
|
|
package:
|
2002-12-27 07:53:42 +01:00
|
|
|
. if defined(SKIP_SILENT)
|
1997-08-20 12:21:05 +02:00
|
|
|
@${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} may not be packaged: ${NO_PACKAGE}."
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
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.
|
|
|
|
################################################################
|
|
|
|
|
2004-07-27 05:59:26 +02:00
|
|
|
# Resume a previous transfer not finished totally.
|
|
|
|
_RESUME_TRANSFER= \
|
2004-07-27 17:56:19 +02:00
|
|
|
dsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile`; \
|
2004-07-27 12:34:53 +02:00
|
|
|
tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \
|
2004-07-27 11:57:57 +02:00
|
|
|
case "$$tsize" in \
|
|
|
|
"") ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \
|
|
|
|
break ;; \
|
|
|
|
esac; \
|
|
|
|
if ${TEST} -n "$$ftp_proxy" -o -n "$$http_proxy"; then \
|
2004-07-27 05:59:26 +02:00
|
|
|
${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies."; \
|
|
|
|
break; \
|
|
|
|
else \
|
2004-07-27 12:34:53 +02:00
|
|
|
if ${TEST} "$$dsize" -lt "$$tsize"; then \
|
|
|
|
if ${TEST} "${FETCH_CMD:T}" != "ftp" -a \
|
|
|
|
-z "${FETCH_RESUME_ARGS}"; then \
|
|
|
|
${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \
|
|
|
|
break; \
|
|
|
|
else \
|
|
|
|
for res_site in $$sites; do \
|
|
|
|
${ECHO_MSG} "===> $$bfile not completed, resuming..."; \
|
|
|
|
cd ${_DISTDIR}; \
|
|
|
|
${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} $${res_site}$${bfile}; \
|
|
|
|
if ${TEST} $$? -eq 0; then \
|
|
|
|
break; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
|
|
|
elif ${TEST} "$$dsize" -gt "$$tsize"; then \
|
|
|
|
${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \
|
|
|
|
break; \
|
2004-07-27 11:57:57 +02:00
|
|
|
fi; \
|
2004-07-27 05:59:26 +02:00
|
|
|
fi
|
2004-07-27 11:57:57 +02:00
|
|
|
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
#
|
|
|
|
# Define the elementary fetch macros.
|
|
|
|
#
|
1998-09-05 21:45:25 +02:00
|
|
|
_FETCH_FILE= \
|
1999-07-28 12:58:30 +02:00
|
|
|
if [ ! -f $$file -a ! -f $$bfile -a ! -h $$bfile ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> $$bfile doesn't seem to exist on this system."; \
|
2000-05-31 03:07:14 +02:00
|
|
|
if [ ! -w ${_DISTDIR}/. ]; then \
|
|
|
|
${ECHO_MSG} "=> Can't download to ${_DISTDIR} (permission denied?)."; \
|
|
|
|
exit 1; \
|
|
|
|
fi; \
|
1998-10-12 21:40:33 +02:00
|
|
|
for site in $$sites; do \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
|
2002-03-01 14:16:45 +01:00
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
|
|
|
${AWK} 'NF == 5 && $$1 == "Size" && $$2 == "('$$bfile')" { printf("=> [%s %s]\n", $$4, $$5) }' ${DISTINFO_FILE}; \
|
|
|
|
fi; \
|
1998-10-12 21:40:33 +02:00
|
|
|
if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
|
2001-06-09 14:15:59 +02:00
|
|
|
if [ -n "${FAILOVER_FETCH}" -a -f ${DISTINFO_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
|
|
|
|
alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DISTINFO_FILE}`; \
|
2001-03-26 19:08:19 +02:00
|
|
|
if [ -z "$$alg" ]; then \
|
|
|
|
alg=${DIGEST_ALGORITHM};\
|
|
|
|
fi; \
|
2001-03-06 15:50:45 +01:00
|
|
|
CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
|
2001-06-09 14:15:59 +02:00
|
|
|
CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')" {print $$4;}' <${DISTINFO_FILE}`; \
|
1998-10-12 21:40:33 +02:00
|
|
|
if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
|
2001-12-02 22:29:20 +01:00
|
|
|
break; \
|
1998-10-12 21:40:33 +02:00
|
|
|
else \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> Checksum failure - trying next site."; \
|
1998-09-01 15:15:29 +02:00
|
|
|
fi; \
|
1999-07-21 14:16:27 +02:00
|
|
|
elif [ ! -f ${_DISTDIR}/$$bfile ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> FTP didn't fetch expected file, trying next site." ; \
|
1998-10-12 21:40:33 +02:00
|
|
|
else \
|
2001-12-02 22:29:20 +01:00
|
|
|
break; \
|
1998-10-12 21:40:33 +02:00
|
|
|
fi; \
|
|
|
|
fi \
|
|
|
|
done; \
|
2001-12-02 22:29:20 +01:00
|
|
|
if [ ! -f ${_DISTDIR}/$$bfile ]; then \
|
|
|
|
${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\
|
|
|
|
${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \
|
|
|
|
exit 1; \
|
|
|
|
fi; \
|
1998-10-12 21:40:33 +02:00
|
|
|
fi
|
1998-09-05 21:45:25 +02:00
|
|
|
|
1999-07-27 17:01:30 +02:00
|
|
|
_CHECK_DIST_PATH= \
|
|
|
|
if [ "X${DIST_PATH}" != "X" ]; then \
|
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
|
|
|
for d in "" ${DIST_PATH:S/:/ /g}; do \
|
1999-07-27 17:01:30 +02:00
|
|
|
if [ "X$$d" = "X" -o "X$$d" = "X${DISTDIR}" ]; then continue; fi; \
|
|
|
|
if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then \
|
|
|
|
${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \
|
|
|
|
${RM} -f $$bfile; \
|
|
|
|
${LN} -s $$d/${DIST_SUBDIR}/$$bfile $$bfile; \
|
|
|
|
break; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi
|
|
|
|
|
1999-07-13 20:09:19 +02:00
|
|
|
#
|
2002-03-04 20:41:03 +01:00
|
|
|
# Set up ORDERED_SITES to work out the exact list of sites for every file,
|
|
|
|
# using the dynamic sites script, or sorting according to the master site
|
|
|
|
# list or the patterns in MASTER_SORT or MASTER_SORT_REGEX as appropriate.
|
|
|
|
# No actual sorting is done until ORDERED_SITES is expanded.
|
1999-07-13 20:09:19 +02:00
|
|
|
#
|
2002-03-10 18:15:29 +01:00
|
|
|
.if defined(MASTER_SORT) || defined(MASTER_SORT_REGEX)
|
1999-07-13 20:09:19 +02:00
|
|
|
MASTER_SORT?=
|
|
|
|
MASTER_SORT_REGEX?=
|
|
|
|
MASTER_SORT_REGEX+= ${MASTER_SORT:S/./\\./g:C/.*/:\/\/[^\/]*&\//}
|
|
|
|
|
2004-01-06 15:43:02 +01:00
|
|
|
MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MASTER_SORT_REGEX:S/\\/\\\\/g}"; }
|
2002-03-04 20:41:03 +01:00
|
|
|
. for srt in ${MASTER_SORT_REGEX}
|
2004-01-06 15:43:02 +01:00
|
|
|
MASTER_SORT_AWK+= /${srt:C/\//\\\//g}/ { good["${srt:S/\\/\\\\/g}"] = good["${srt:S/\\/\\\\/g}"] " " $$0 ; next; }
|
2002-03-04 20:41:03 +01:00
|
|
|
. endfor
|
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
|
|
|
MASTER_SORT_AWK+= { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
|
|
|
|
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
SORT_SITES_CMD= ${ECHO} $$unsorted_sites | ${AWK} '${MASTER_SORT_AWK}'
|
2004-01-06 15:43:02 +01:00
|
|
|
ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} `${SORT_SITES_CMD:S/\\/\\\\/g:C/"/\"/g}`
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
.else
|
2002-01-07 00:01:31 +01:00
|
|
|
ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} $$unsorted_sites
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
.endif
|
1999-07-13 20:09:19 +02:00
|
|
|
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
#
|
2002-03-04 20:41:03 +01:00
|
|
|
# Associate each file to fetch with the correct site(s).
|
Re-work the fetch target(s), as discussed on "tech-pkg". The primary
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
2002-01-06 21:03:22 +01:00
|
|
|
#
|
2002-03-10 18:15:29 +01:00
|
|
|
.if defined(DYNAMIC_MASTER_SITES)
|
|
|
|
. for fetchfile in ${_ALLFILES}
|
2002-09-29 03:38:32 +02:00
|
|
|
SITES_${fetchfile:T:S/=/--/}?= `${SH} ${FILESDIR}/getsite.sh ${fetchfile:T}`
|
2002-03-10 18:15:29 +01:00
|
|
|
. endfor
|
|
|
|
.endif
|
2002-03-04 20:41:03 +01:00
|
|
|
.if !empty(_DISTFILES)
|
|
|
|
. for fetchfile in ${_DISTFILES}
|
2002-09-29 03:38:32 +02:00
|
|
|
SITES_${fetchfile:T:S/=/--/}?= ${MASTER_SITES}
|
2002-03-04 20:41:03 +01:00
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
.if !empty(_PATCHFILES)
|
|
|
|
. for fetchfile in ${_PATCHFILES}
|
2002-09-29 03:38:32 +02:00
|
|
|
SITES_${fetchfile:T:S/=/--/}?= ${PATCH_SITES}
|
2002-03-04 20:41:03 +01:00
|
|
|
. endfor
|
|
|
|
.endif
|
|
|
|
|
2002-07-03 18:30:18 +02:00
|
|
|
# This code is only called in a batch case, to check for the presence of
|
|
|
|
# the distfiles
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: batch-check-distfiles
|
2002-07-03 18:30:18 +02:00
|
|
|
batch-check-distfiles:
|
2002-07-02 13:26:05 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2002-07-03 18:30:18 +02:00
|
|
|
gotfiles=yes; \
|
|
|
|
for file in "" ${_ALLFILES}; do \
|
|
|
|
case "$$file" in \
|
|
|
|
"") continue ;; \
|
|
|
|
*) if [ ! -f ${DISTDIR}/$$file ]; then \
|
|
|
|
gotfiles=no; \
|
|
|
|
fi ;; \
|
|
|
|
esac; \
|
|
|
|
done; \
|
|
|
|
case "$$gotfiles" in \
|
|
|
|
no) ${ECHO} "*** This package requires user intervention to download the distfiles"; \
|
2002-07-02 13:26:05 +02:00
|
|
|
${ECHO} "*** Please fetch the distfiles manually and place them in"; \
|
|
|
|
${ECHO} "*** ${DISTDIR}"; \
|
|
|
|
[ ! -z "${MASTER_SITES}" ] && \
|
|
|
|
${ECHO} "*** The distfiles are available from ${MASTER_SITES}"; \
|
|
|
|
[ ! -z "${HOMEPAGE}" ] && \
|
|
|
|
${ECHO} "*** See ${HOMEPAGE} for more details"; \
|
|
|
|
${ECHO}; \
|
2002-07-24 19:44:16 +02:00
|
|
|
${TOUCH} ${INTERACTIVE_COOKIE}; \
|
2002-07-03 18:30:18 +02:00
|
|
|
${FALSE} ;; \
|
|
|
|
esac
|
|
|
|
|
2003-04-17 14:36:54 +02:00
|
|
|
# check for any vulnerabilities in the package
|
|
|
|
# Please do not modify the leading "@" here
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: check-vulnerable
|
2003-04-17 14:36:54 +02:00
|
|
|
check-vulnerable:
|
2003-09-03 17:05:43 +02:00
|
|
|
@if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \
|
2003-04-17 14:36:54 +02:00
|
|
|
${SETENV} PKGNAME="${PKGNAME}" \
|
2003-04-29 22:31:52 +02:00
|
|
|
PKGBASE="${PKGBASE}" \
|
|
|
|
${AWK} '/^$$/ { next } \
|
|
|
|
/^#.*/ { next } \
|
2003-04-30 05:05:06 +02:00
|
|
|
$$1 !~ ENVIRON["PKGBASE"] { next } \
|
2003-09-03 17:05:43 +02:00
|
|
|
{ s = sprintf("${PKG_ADMIN} pmatch \"%s\" %s && ${ECHO} \"*** WARNING - %s vulnerability in %s - see %s for more information ***\"", $$1, ENVIRON["PKGNAME"], $$2, ENVIRON["PKGNAME"], $$3); system(s); }' < ${PKGVULNDIR}/pkg-vulnerabilities || ${FALSE}; \
|
2003-04-17 14:36:54 +02:00
|
|
|
fi
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-fetch
|
2002-07-03 18:30:18 +02:00
|
|
|
.if !target(do-fetch)
|
|
|
|
do-fetch:
|
2003-04-17 15:04:56 +02:00
|
|
|
. if !defined(ALLOW_VULNERABLE_PACKAGES)
|
2003-04-17 14:36:54 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-03 17:05:43 +02:00
|
|
|
if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \
|
2003-05-18 22:52:28 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Checking for vulnerabilities in ${PKGNAME}"; \
|
|
|
|
vul=`${MAKE} ${MAKEFLAGS} check-vulnerable`; \
|
|
|
|
case "$$vul" in \
|
|
|
|
"") ;; \
|
|
|
|
*) ${ECHO} "$$vul"; \
|
|
|
|
${ECHO} "or define ALLOW_VULNERABLE_PACKAGES if this package is absolutely essential"; \
|
|
|
|
${FALSE} ;; \
|
|
|
|
esac; \
|
|
|
|
else \
|
2003-09-03 17:05:43 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> *** No ${PKGVULNDIR}/pkg-vulnerabilities file found,"; \
|
2003-06-02 01:56:50 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> *** skipping vulnerability checks. To fix, install"; \
|
2003-06-02 01:59:07 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> *** the pkgsrc/security/audit-packages package and run"; \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> *** '${LOCALBASE}/sbin/download-vulnerability-list'."; \
|
2003-05-18 22:52:28 +02:00
|
|
|
fi
|
2003-04-17 15:04:56 +02:00
|
|
|
. endif
|
2002-07-03 18:30:18 +02:00
|
|
|
. if !empty(_ALLFILES)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${TEST} -d ${_DISTDIR} || ${MKDIR} ${_DISTDIR}
|
|
|
|
. if ${INTERACTIVE_STAGE:Mfetch} == "fetch" && defined(BATCH)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${MAKE} ${MAKEFLAGS} batch-check-distfiles
|
2002-07-02 13:26:05 +02:00
|
|
|
. else
|
|
|
|
. for fetchfile in ${_ALLFILES}
|
2003-03-30 07:06:49 +02:00
|
|
|
. if defined(_FETCH_MESSAGE)
|
2002-03-04 20:41:03 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2002-02-13 21:05:02 +01:00
|
|
|
file="${fetchfile}"; \
|
2002-03-04 20:41:03 +01:00
|
|
|
if [ ! -f ${DISTDIR}/$$file ]; then \
|
|
|
|
${_FETCH_MESSAGE}; \
|
|
|
|
fi
|
2002-07-02 13:26:05 +02:00
|
|
|
. else
|
2002-03-04 20:41:03 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
cd ${_DISTDIR}; \
|
2001-12-02 22:29:20 +01:00
|
|
|
file="${fetchfile}"; \
|
|
|
|
bfile="${fetchfile:T}"; \
|
2002-09-29 03:38:32 +02:00
|
|
|
unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"; \
|
2002-03-04 20:41:03 +01:00
|
|
|
sites="${ORDERED_SITES}"; \
|
2001-12-02 22:29:20 +01:00
|
|
|
${_CHECK_DIST_PATH}; \
|
2004-07-27 17:56:19 +02:00
|
|
|
if ${TEST} "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ; then \
|
|
|
|
${_FETCH_FILE}; ${_RESUME_TRANSFER}; \
|
|
|
|
else \
|
|
|
|
${_FETCH_FILE}; \
|
|
|
|
fi
|
2002-07-02 13:26:05 +02:00
|
|
|
. endif # defined(_FETCH_MESSAGE)
|
|
|
|
. endfor
|
|
|
|
. endif # INTERACTIVE_STAGE == fetch
|
2002-03-04 20:41:03 +01:00
|
|
|
. endif # !empty(_ALLFILES)
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2001-01-22 05:00:54 +01:00
|
|
|
# show both build and run depends directories (non-recursively)
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-depends-dirs
|
2001-01-22 05:00:54 +01:00
|
|
|
.if !target(show-depends-dirs)
|
|
|
|
show-depends-dirs:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
dlist=""; \
|
2003-01-15 21:55:38 +01:00
|
|
|
thisdir=`${PWD_CMD}`; \
|
2001-09-14 20:54:43 +02:00
|
|
|
for reldir in "" ${DEPENDS:C/^[^:]*://:C/:.*$//} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*$//} ;\
|
2002-05-03 14:44:01 +02:00
|
|
|
do \
|
|
|
|
if [ "X$$reldir" = "X" ]; then continue; fi; \
|
|
|
|
cd $$thisdir/$$reldir; \
|
2003-01-15 21:55:38 +01:00
|
|
|
WD=`${PWD_CMD}`; \
|
2002-05-03 14:44:01 +02:00
|
|
|
d=`dirname $$WD`; \
|
|
|
|
absdir=`basename $$d`/`basename $$WD`; \
|
|
|
|
dlist="$$dlist $$absdir"; \
|
|
|
|
done; \
|
|
|
|
cd $$thisdir; \
|
2001-01-22 05:00:54 +01:00
|
|
|
${ECHO} "$$dlist"
|
|
|
|
.endif
|
|
|
|
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
# Show all build and run depends, reverse-breadth first, with options.
|
|
|
|
.if make(show-all-depends-dirs) || make(show-all-depends-dirs-excl) || make (show-root-dirs)
|
|
|
|
|
|
|
|
# "awk" macro to recurse over the dependencies efficiently, never running in
|
|
|
|
# the same same directory twice. You may set the following options via "-v":
|
|
|
|
#
|
|
|
|
# NonSelf = 1 to not print own directory;
|
|
|
|
# RootsOnly = 1 to print only root directories (i.e. directories
|
|
|
|
# of packages with no dependencies), including possibly
|
|
|
|
# own directory
|
|
|
|
#
|
|
|
|
_RECURSE_DEPENDS_DIRS= \
|
|
|
|
function append_dirs(dir) { \
|
2002-05-03 14:44:01 +02:00
|
|
|
command = "cd ../../" dir " && ${MAKE} show-depends-dirs"; \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
command | getline tmp_dirs; \
|
|
|
|
close(command); \
|
|
|
|
if (tmp_dirs ~ /^$$/) \
|
|
|
|
root_dirs[p++] = dir; \
|
|
|
|
for (i = 1; i <= split(tmp_dirs, tmp_r); i++) \
|
|
|
|
if (!(tmp_r[i] in hash_all_dirs)) { \
|
|
|
|
all_dirs[n++] = tmp_r[i]; \
|
|
|
|
hash_all_dirs[tmp_r[i]] = 1 \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
BEGIN { \
|
2003-01-15 21:55:38 +01:00
|
|
|
command = "${PWD_CMD}"; \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
command | getline start_dir; \
|
|
|
|
close(command); \
|
|
|
|
i = split(start_dir, tmp_r, /\//); \
|
|
|
|
all_dirs[n++] = tmp_r[i-1] "/" tmp_r[i]; \
|
|
|
|
for (; m < n; ) \
|
|
|
|
append_dirs(all_dirs[m++]); \
|
|
|
|
if (RootsOnly) { \
|
|
|
|
printf("%s", root_dirs[--p]); \
|
|
|
|
for (; p > 0; ) \
|
|
|
|
printf(" %s", root_dirs[--p]) \
|
|
|
|
} \
|
|
|
|
else { \
|
|
|
|
if (m > NonSelf) \
|
|
|
|
printf("%s", all_dirs[--m]); \
|
|
|
|
for (; m > NonSelf; ) \
|
|
|
|
printf(" %s", all_dirs[--m]) \
|
|
|
|
} \
|
|
|
|
print \
|
|
|
|
}
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-all-depends-dirs
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.if make(show-all-depends-dirs)
|
|
|
|
show-all-depends-dirs:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${AWK} '${_RECURSE_DEPENDS_DIRS}'
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-all-depends-dirs-excl
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.if make(show-all-depends-dirs-excl)
|
|
|
|
show-all-depends-dirs-excl:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v NonSelf=1 '${_RECURSE_DEPENDS_DIRS}'
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-root-dirs
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.if make(show-root-dirs)
|
|
|
|
show-root-dirs:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v RootsOnly=1 '${_RECURSE_DEPENDS_DIRS}'
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.endif # make(show-{all-depends-dirs{,-excl},root-dirs})
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-distfiles
|
1999-06-28 13:42:28 +02:00
|
|
|
.if !target(show-distfiles)
|
|
|
|
show-distfiles:
|
2002-12-07 03:37:56 +01:00
|
|
|
. if defined(PKG_FAIL_REASON)
|
1999-06-28 13:42:28 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
1999-06-28 13:42:28 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
for file in "" ${_CKSUMFILES}; do \
|
|
|
|
if [ "X$$file" = "X" ]; then continue; fi; \
|
|
|
|
${ECHO} $$file; \
|
|
|
|
done
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-06-28 13:42:28 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-downlevel
|
1999-07-02 14:54:28 +02:00
|
|
|
.if !target(show-downlevel)
|
|
|
|
show-downlevel:
|
2002-12-07 03:37:56 +01:00
|
|
|
. if defined(PKG_FAIL_REASON)
|
1999-07-02 14:54:28 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
1999-07-02 14:54:28 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 20:26:15 +02:00
|
|
|
found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
|
1999-07-02 14:54:28 +02:00
|
|
|
if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then \
|
2000-06-03 20:51:34 +02:00
|
|
|
${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \
|
2001-09-10 22:03:17 +02:00
|
|
|
if [ "X$$STOP_DOWNLEVEL_AFTER_FIRST" != "X" ]; then \
|
2002-07-22 04:33:55 +02:00
|
|
|
${ECHO} "stopping after first downlevel pkg found"; \
|
2001-09-10 22:03:17 +02:00
|
|
|
exit 1; \
|
|
|
|
fi; \
|
1999-07-02 14:54:28 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-07-02 14:54:28 +02:00
|
|
|
.endif
|
2000-05-11 13:23:20 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-installed-depends
|
2001-10-01 00:10:33 +02:00
|
|
|
.if !target(show-installed-depends)
|
|
|
|
show-installed-depends:
|
2001-10-04 23:48:12 +02:00
|
|
|
. if defined(DEPENDS)
|
2001-10-05 00:01:54 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
for i in ${DEPENDS:C/:.*$//:Q:S/\ / /g} ; do \
|
2003-09-13 07:55:14 +02:00
|
|
|
echo "$$i =>" `${PKG_BEST_EXISTS} "$$i"` ; \
|
2001-10-01 00:10:33 +02:00
|
|
|
done
|
2001-10-04 23:48:12 +02:00
|
|
|
. endif
|
2001-10-01 00:10:33 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-needs-update
|
2003-06-14 20:52:46 +02:00
|
|
|
.if !target(show-needs-update)
|
|
|
|
show-needs-update:
|
|
|
|
. if defined(DEPENDS)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
for i in `${MAKE} show-all-depends-dirs`; do \
|
|
|
|
cd ${_PKGSRCDIR}/$$i; \
|
2004-01-25 17:12:40 +01:00
|
|
|
want=`${MAKE} show-var VARNAME=PKGNAME`; \
|
|
|
|
wild=`${MAKE} show-var VARNAME=PKGWILDCARD`; \
|
2003-09-13 20:26:15 +02:00
|
|
|
have=`${PKG_BEST_EXISTS} "$$wild" || ${TRUE}`; \
|
2003-06-14 20:52:46 +02:00
|
|
|
if [ -z "$$have" ]; then \
|
2003-09-13 20:26:15 +02:00
|
|
|
${ECHO} "$$i => (none) => needs install of $$want"; \
|
2003-06-14 20:52:46 +02:00
|
|
|
elif [ "$$have" != "$$want" ]; then \
|
2003-09-13 20:26:15 +02:00
|
|
|
${ECHO} "$$i => $$have => needs update to $$want"; \
|
2003-06-14 20:52:46 +02:00
|
|
|
fi; \
|
|
|
|
done
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: show-pkgsrc-dir
|
2000-05-11 13:23:20 +02:00
|
|
|
.if !target(show-pkgsrc-dir)
|
|
|
|
show-pkgsrc-dir:
|
2002-12-07 03:37:56 +01:00
|
|
|
. if defined(PKG_FAIL_REASON)
|
2000-05-11 13:23:20 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-05-11 13:23:20 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 07:55:14 +02:00
|
|
|
found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
|
2000-05-11 13:23:20 +02:00
|
|
|
if [ "X$$found" != "X" ]; then \
|
2000-06-03 20:51:34 +02:00
|
|
|
${ECHO} ${PKGPATH}; \
|
2000-05-11 13:23:20 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-05-11 13:23:20 +02:00
|
|
|
.endif
|
1999-07-02 14:54:28 +02:00
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
# Extract
|
|
|
|
|
2002-01-19 22:29:41 +01:00
|
|
|
# pkgsrc coarse-grained locking definitions and targets
|
|
|
|
.if ${PKGSRC_LOCKTYPE} == "none"
|
|
|
|
_ACQUIRE_LOCK= ${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
|
|
|
_RELEASE_LOCK= ${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
|
|
|
.else
|
|
|
|
LOCKFILE= ${WRKDIR}/.lockfile
|
|
|
|
|
|
|
|
_ACQUIRE_LOCK= \
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-06-14 18:53:00 +02:00
|
|
|
ppid=`${PS} -p $$$$ -o ppid | ${AWK} 'NR == 2 { print $$1 }'`; \
|
2004-07-04 00:11:56 +02:00
|
|
|
if ${TEST} "$$ppid" = ""; then \
|
|
|
|
${ECHO} "No parent process ID found."; \
|
|
|
|
${FALSE}; \
|
|
|
|
fi; \
|
2002-01-19 22:29:41 +01:00
|
|
|
while true; do \
|
2004-06-23 13:13:12 +02:00
|
|
|
if ${TEST} -f /var/run/dmesg.boot -a -f ${LOCKFILE} -a \
|
|
|
|
/var/run/dmesg.boot -nt ${LOCKFILE}; then \
|
2003-09-09 13:00:30 +02:00
|
|
|
${ECHO} "=> Removing stale ${LOCKFILE}"; \
|
|
|
|
${RM} ${LOCKFILE}; \
|
|
|
|
fi; \
|
2002-01-19 22:29:41 +01:00
|
|
|
${SHLOCK} -f ${LOCKFILE} -p $$ppid && break; \
|
|
|
|
${ECHO} "=> Lock is held by pid `cat ${LOCKFILE}`"; \
|
|
|
|
case "${PKGSRC_LOCKTYPE}" in \
|
|
|
|
once) exit 1 ;; \
|
|
|
|
sleep) sleep ${PKGSRC_SLEEPSECS} ;; \
|
|
|
|
esac \
|
|
|
|
done; \
|
2003-02-18 11:36:44 +01:00
|
|
|
if [ "${PKG_VERBOSE}" != "" ]; then \
|
|
|
|
${ECHO_MSG} "=> Lock acquired on behalf of process $$ppid"; \
|
|
|
|
fi
|
2002-01-19 22:29:41 +01:00
|
|
|
|
|
|
|
_RELEASE_LOCK= \
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-02-18 11:36:44 +01:00
|
|
|
if [ "${PKG_VERBOSE}" != "" ]; then \
|
|
|
|
${ECHO_MSG} "=> Lock released on behalf of process `${CAT} ${LOCKFILE}`"; \
|
|
|
|
fi; \
|
2002-01-19 22:29:41 +01:00
|
|
|
${RM} ${LOCKFILE}
|
|
|
|
.endif # PKGSRC_LOCKTYPE
|
1998-01-22 11:20:48 +01:00
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
${WRKDIR}:
|
|
|
|
.if !defined(KEEP_WRKDIR)
|
|
|
|
. if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
|
|
|
|
. if !exists(${LOCKFILE})
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${WRKDIR}
|
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${WRKDIR}
|
|
|
|
.ifdef WRKOBJDIR
|
|
|
|
. if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
|
|
|
|
. if !exists(${LOCKFILE})
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${RM} -f ${WRKDIR_BASENAME} || ${TRUE}
|
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if ${LN} -s ${WRKDIR} ${WRKDIR_BASENAME} 2>/dev/null; then \
|
|
|
|
${ECHO} "${WRKDIR_BASENAME} -> ${WRKDIR}"; \
|
|
|
|
fi
|
|
|
|
.endif # WRKOBJDIR
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2004-02-13 20:02:07 +01:00
|
|
|
_EXTRACT_SUFFIXES= .tar.gz .tgz .tar.bz2 .tbz .tar.Z .tar _tar.gz
|
|
|
|
_EXTRACT_SUFFIXES+= .shar.gz .shar.bz2 .shar.Z .shar
|
|
|
|
_EXTRACT_SUFFIXES+= .zip
|
|
|
|
_EXTRACT_SUFFIXES+= .lha .lzh
|
|
|
|
_EXTRACT_SUFFIXES+= .Z .bz2 .gz
|
|
|
|
_EXTRACT_SUFFIXES+= .zoo
|
2004-07-06 13:28:55 +02:00
|
|
|
_EXTRACT_SUFFIXES+= .bin
|
2004-02-13 20:02:07 +01:00
|
|
|
_EXTRACT_SUFFIXES+= .rar
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
|
|
|
|
# If the distfile has a tar.bz2 suffix, use bzcat in preference to gzcat,
|
|
|
|
# pulling in the "bzip2" package if necessary. [Note: this is only for
|
|
|
|
# the benefit of pre-1.5 NetBSD systems. "gzcat" on newer systems happily
|
|
|
|
# decodes bzip2.] Do likewise for ".zip" and ".lha" distfiles.
|
|
|
|
#
|
2002-01-28 20:08:18 +01:00
|
|
|
.if !empty(EXTRACT_ONLY:M*.bz2) || !empty(EXTRACT_ONLY:M*.tbz) || \
|
|
|
|
!empty(EXTRACT_SUFX:M*.bz2) || !empty(EXTRACT_SUFX:M*.tbz)
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
. if exists(/usr/bin/bzcat)
|
|
|
|
BZCAT= /usr/bin/bzcat <
|
|
|
|
. else
|
|
|
|
BUILD_DEPENDS+= bzip2>=0.9.0b:../../archivers/bzip2
|
|
|
|
BZCAT= ${LOCALBASE}/bin/bzcat
|
|
|
|
. endif
|
|
|
|
.endif
|
2002-01-28 20:08:18 +01:00
|
|
|
.if !empty(EXTRACT_ONLY:M*.zip) || !empty(EXTRACT_SUFX:M*.zip)
|
2002-01-28 20:00:05 +01:00
|
|
|
BUILD_DEPENDS+= unzip-[0-9]*:../../archivers/unzip
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
.endif
|
2002-01-28 20:08:18 +01:00
|
|
|
.if !empty(EXTRACT_ONLY:M*.lzh) || !empty(EXTRACT_ONLY:M*.lha) || \
|
|
|
|
!empty(EXTRACT_SUFX:M*.lzh) || !empty(EXTRACT_SUFX:M*.lha)
|
2003-03-30 07:06:49 +02:00
|
|
|
BUILD_DEPENDS+= lha>=114.9:../../archivers/lha
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
.endif
|
2002-07-11 17:52:35 +02:00
|
|
|
.if !defined(GZCAT)
|
|
|
|
. if !empty(EXTRACT_ONLY:M*.gz) || !empty(EXTRACT_ONLY:M*.tgz) || \
|
|
|
|
!empty(EXTRACT_SUFX:M*.gz) || !empty(EXTRACT_SUFX:M*.tgz)
|
|
|
|
BUILD_DEPENDS+= gzip-base:../../archivers/gzip-base
|
|
|
|
GZCAT= ${LOCALBASE}/bin/zcat
|
|
|
|
. endif
|
|
|
|
.endif
|
2002-12-23 02:59:43 +01:00
|
|
|
.if !empty(EXTRACT_ONLY:M*.zoo) || !empty(EXTRACT_SUFX:M*.zoo)
|
|
|
|
BUILD_DEPENDS+= unzoo-[0-9]*:../../archivers/unzoo
|
|
|
|
.endif
|
2004-02-12 22:29:28 +01:00
|
|
|
.if !empty(EXTRACT_ONLY:M*.rar) || !empty(EXTRACT_SUFX:M*.rar)
|
|
|
|
BUILD_DEPENDS+= unrar>=3.3.4:../../archivers/unrar
|
|
|
|
.endif
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
|
|
|
|
DECOMPRESS_CMD.tar.gz?= ${GZCAT}
|
|
|
|
DECOMPRESS_CMD.tgz?= ${DECOMPRESS_CMD.tar.gz}
|
|
|
|
DECOMPRESS_CMD.tar.bz2?= ${BZCAT}
|
|
|
|
DECOMPRESS_CMD.tbz?= ${DECOMPRESS_CMD.tar.bz2}
|
2002-02-25 06:07:45 +01:00
|
|
|
DECOMPRESS_CMD.tar.Z?= ${GZCAT}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
DECOMPRESS_CMD.tar?= ${CAT}
|
|
|
|
|
2002-01-27 19:31:47 +01:00
|
|
|
DECOMPRESS_CMD.shar.gz?= ${GZCAT}
|
|
|
|
DECOMPRESS_CMD.shar.bz2?= ${BZCAT}
|
|
|
|
DECOMPRESS_CMD.shar.Z?= ${GZCAT}
|
|
|
|
DECOMPRESS_CMD.shar?= ${CAT}
|
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
DECOMPRESS_CMD.Z?= ${GZCAT}
|
|
|
|
DECOMPRESS_CMD.bz2?= ${BZCAT}
|
|
|
|
DECOMPRESS_CMD.gz?= ${GZCAT}
|
|
|
|
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
DECOMPRESS_CMD?= ${GZCAT}
|
2004-02-13 20:02:07 +01:00
|
|
|
.for __suffix__ in ${_EXTRACT_SUFFIXES}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
. if !defined(DECOMPRESS_CMD${__suffix__})
|
|
|
|
DECOMPRESS_CMD${__suffix__}?= ${DECOMPRESS_CMD}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
# If this is empty, then everything gets extracted.
|
|
|
|
EXTRACT_ELEMENTS?= # empty
|
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
DOWNLOADED_DISTFILE= $${extract_file}
|
1999-04-01 16:07:52 +02:00
|
|
|
|
2003-11-23 00:47:47 +01:00
|
|
|
EXTRACT_CMD.zip?= ${LOCALBASE}/bin/unzip ${EXTRACT_CMD_OPTS.zip} $${extract_file}
|
|
|
|
EXTRACT_CMD_OPTS.zip?= -Laqo
|
|
|
|
EXTRACT_CMD.lha?= ${LOCALBASE}/bin/lha ${EXTRACT_CMD_OPTS.lha} $${extract_file}
|
|
|
|
EXTRACT_CMD_OPTS.lha?= xq
|
2002-02-25 05:43:55 +01:00
|
|
|
EXTRACT_CMD.lzh?= ${EXTRACT_CMD.lha}
|
2003-11-23 00:47:47 +01:00
|
|
|
EXTRACT_CMD_OPTS.lzh?= ${EXTRACT_CMD_OPTS.lha}
|
|
|
|
EXTRACT_CMD.zoo?= ${LOCALBASE}/bin/unzoo ${EXTRACT_CMD_OPTS.zoo} $${extract_file}
|
|
|
|
EXTRACT_CMD_OPTS.zoo?= -x
|
2004-02-12 22:29:28 +01:00
|
|
|
EXTRACT_CMD.rar?= ${LOCALBASE}/bin/unrar ${EXTRACT_CMD_OPTS.rar} $${extract_file}
|
|
|
|
EXTRACT_CMD_OPTS.rar?= x -inul
|
2004-07-06 13:28:55 +02:00
|
|
|
EXTRACT_CMD.bin?= ${ECHO} yes | $${extract_file} ${EXTRACT_CMD_OPTS.bin} >/dev/null
|
2002-02-25 05:43:55 +01:00
|
|
|
|
|
|
|
.for __suffix__ in .gz .bz2 .Z
|
|
|
|
EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} > `${BASENAME} $${extract_file} ${__suffix__}`
|
|
|
|
.endfor
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
|
2002-01-27 19:31:47 +01:00
|
|
|
.for __suffix__ in .shar.gz .shar.bz2 .shar.Z .shar
|
2002-02-25 05:43:55 +01:00
|
|
|
EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${SH}
|
2002-01-27 19:31:47 +01:00
|
|
|
.endfor
|
|
|
|
|
2004-03-31 13:19:09 +02:00
|
|
|
# If EXTRACT_USING_PAX is defined, use pax in preference to (GNU) tar.
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
#
|
|
|
|
.if defined(EXTRACT_USING_PAX)
|
2004-03-31 13:19:09 +02:00
|
|
|
_DFLT_EXTRACT_CMD?= ${DECOMPRESS_CMD} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
.else
|
2002-02-25 05:43:55 +01:00
|
|
|
_DFLT_EXTRACT_CMD?= ${DECOMPRESS_CMD} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
.endif
|
|
|
|
|
2004-02-13 20:02:07 +01:00
|
|
|
.for __suffix__ in ${_EXTRACT_SUFFIXES}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
. if !defined(EXTRACT_CMD${__suffix__})
|
|
|
|
. if defined(EXTRACT_USING_PAX)
|
2004-03-31 13:19:09 +02:00
|
|
|
EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
. else
|
2002-02-25 05:43:55 +01:00
|
|
|
EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
|
Teach bsd.pkg.mk how to extract all files in ${EXTRACT_ONLY} that end in
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
2001-12-20 00:14:01 +01:00
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
# _SHELL_EXTRACT is a "subroutine" for extracting an archive. It extracts
|
|
|
|
# the contents of archive named by the shell variable "extract_file" based
|
|
|
|
# on the file extension of the archive.
|
2002-01-25 08:16:16 +01:00
|
|
|
#
|
2002-02-25 05:43:55 +01:00
|
|
|
_SHELL_EXTRACT= case $${extract_file} in
|
2004-02-13 20:02:07 +01:00
|
|
|
.for __suffix__ in ${_EXTRACT_SUFFIXES}
|
2002-02-25 05:43:55 +01:00
|
|
|
_SHELL_EXTRACT+= *${__suffix__}) ${EXTRACT_CMD${__suffix__}} ;;
|
2002-01-25 08:16:16 +01:00
|
|
|
.endfor
|
2002-02-25 05:43:55 +01:00
|
|
|
_SHELL_EXTRACT+= *) ${_DFLT_EXTRACT_CMD} ;;
|
|
|
|
_SHELL_EXTRACT+= esac
|
2002-01-25 08:16:16 +01:00
|
|
|
|
2002-02-25 05:43:55 +01:00
|
|
|
EXTRACT_CMD?= ${_SHELL_EXTRACT}
|
2002-01-19 22:29:41 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-extract
|
2002-01-19 22:29:41 +01:00
|
|
|
.if !target(do-extract)
|
|
|
|
do-extract: ${WRKDIR}
|
2002-02-25 05:43:55 +01:00
|
|
|
. for __file__ in ${EXTRACT_ONLY}
|
2002-01-15 01:32:12 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2002-02-25 05:43:55 +01:00
|
|
|
extract_file="${_DISTDIR}/${__file__}"; export extract_file; \
|
|
|
|
cd ${WRKDIR}; ${EXTRACT_CMD}
|
|
|
|
. endfor
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Patch
|
|
|
|
|
2002-04-25 02:02:41 +02:00
|
|
|
# LOCALPATCHES contains the location of local patches to packages
|
|
|
|
# that are maintained in a directory tree reflecting the same
|
|
|
|
# hierarchy as the pkgsrc tree, i.e. local patches for www/apache
|
|
|
|
# would be found as ${LOCALPATCHES}/www/apache/*.
|
|
|
|
#
|
2003-04-15 21:51:21 +02:00
|
|
|
.if defined(LOCALPATCHES)
|
2002-04-25 02:02:41 +02:00
|
|
|
_DFLT_LOCALPATCHFILES= ${LOCALPATCHES}/${PKGPATH}/*
|
|
|
|
_LOCALPATCHFILES= ${_DFLT_LOCALPATCHFILES}
|
2003-04-15 21:51:21 +02:00
|
|
|
.endif
|
2002-04-25 02:02:41 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-patch
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(do-patch)
|
2001-03-06 15:50:45 +01:00
|
|
|
do-patch: uptodate-digest
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(PATCHFILES)
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patches for ${PKGNAME}"
|
2004-08-07 17:58:59 +02:00
|
|
|
. for i in ${PATCHFILES}
|
2002-05-13 13:43:05 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${_DISTDIR}; \
|
2004-08-07 17:58:59 +02:00
|
|
|
if [ ${PATCH_DEBUG_TMP} = yes ]; then \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patch ${i}"; \
|
|
|
|
fi; \
|
|
|
|
${PATCH_DIST_CAT.${i:S/=/--/}} | \
|
|
|
|
${PATCH} ${PATCH_DIST_ARGS.${i:S/=/--/}} \
|
2004-08-25 06:09:10 +02:00
|
|
|
|| { ${ECHO} "Patch ${i} failed"; ${PKGSRC_PATCH_FAIL}; }
|
2004-08-07 17:58:59 +02:00
|
|
|
. endfor
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2002-04-25 02:02:41 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
patchlist=""; \
|
|
|
|
if [ -d ${PATCHDIR} ]; then \
|
1998-09-23 15:09:32 +02:00
|
|
|
if [ "`${ECHO} ${PATCHDIR}/patch-*`" = "${PATCHDIR}/patch-*" ]; then \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Ignoring empty patch directory"; \
|
1999-07-09 15:14:21 +02:00
|
|
|
if [ -d ${PATCHDIR}/CVS ]; then \
|
2002-01-21 22:09:41 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Perhaps you forgot the -P flag to 'cvs checkout' or 'cvs update'?"; \
|
1999-07-09 15:14:21 +02:00
|
|
|
fi; \
|
|
|
|
else \
|
2002-04-25 02:02:41 +02:00
|
|
|
patchlist=`${ECHO} ${PATCHDIR}/patch-*`; \
|
|
|
|
fi; \
|
|
|
|
fi; \
|
|
|
|
if [ "X${_LOCALPATCHFILES}" = "X${_DFLT_LOCALPATCHFILES}" ]; then \
|
|
|
|
localpatchfiles="`${ECHO} ${_LOCALPATCHFILES}`"; \
|
|
|
|
if [ "$${localpatchfiles}" != "${_LOCALPATCHFILES}" ]; then \
|
|
|
|
patchlist="$${patchlist} $${localpatchfiles}"; \
|
|
|
|
fi; \
|
|
|
|
else \
|
|
|
|
patchlist=`${ECHO} $${patchlist} ${_LOCALPATCHFILES}`; \
|
|
|
|
fi; \
|
|
|
|
if [ -n "$${patchlist}" ]; then \
|
2002-11-26 16:19:50 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patches for ${PKGNAME}" ; \
|
2002-04-25 02:02:41 +02:00
|
|
|
fail=""; \
|
|
|
|
for i in $${patchlist}; do \
|
|
|
|
if [ ! -f "$$i" ]; then \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> $$i is not a valid patch file - skipping"; \
|
|
|
|
continue; \
|
|
|
|
fi; \
|
|
|
|
case $$i in \
|
|
|
|
*.orig|*.rej|*~) \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Ignoring patchfile $$i"; \
|
|
|
|
continue; \
|
|
|
|
;; \
|
|
|
|
${PATCHDIR}/patch-local-*) \
|
|
|
|
;; \
|
|
|
|
${PATCHDIR}/patch-*) \
|
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
|
|
|
filename=`expr $$i : '.*/\(.*\)'`; \
|
|
|
|
algsum=`${AWK} 'NF == 4 && $$2 == "('$$filename')" && $$3 == "=" {print $$1 " " $$4}' ${DISTINFO_FILE} || ${TRUE}`; \
|
|
|
|
if [ "X$$algsum" != "X" ]; then \
|
|
|
|
alg=`${ECHO} $$algsum | ${AWK} '{ print $$1 }'`; \
|
|
|
|
recorded=`${ECHO} $$algsum | ${AWK} '{ print $$2 }'`; \
|
|
|
|
calcsum=`${SED} -e '/\$$NetBSD.*/d' $$i | ${DIGEST} $$alg`; \
|
|
|
|
if [ ${PATCH_DEBUG_TMP} = yes ]; then \
|
|
|
|
${ECHO_MSG} "=> Verifying $$filename (using digest algorithm $$alg)"; \
|
1999-07-09 15:14:21 +02:00
|
|
|
fi; \
|
|
|
|
fi; \
|
2002-04-25 02:02:41 +02:00
|
|
|
if [ "X$$algsum" = "X" -o "X$$recorded" = "X" ]; then \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
|
|
|
${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
|
|
|
continue; \
|
|
|
|
fi; \
|
|
|
|
if [ "X$$calcsum" != "X$$recorded" ]; then \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
|
|
|
${ECHO_MSG} "Patch file $$i has been modified"; \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
|
|
|
fail="$$fail $$filename"; \
|
|
|
|
continue; \
|
|
|
|
fi; \
|
2003-11-20 16:07:53 +01:00
|
|
|
else \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
|
|
|
${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
|
|
|
|
${ECHO_MSG} "**************************************"; \
|
2003-11-20 17:59:02 +01:00
|
|
|
continue; \
|
1999-07-27 17:01:30 +02:00
|
|
|
fi; \
|
2002-04-25 02:02:41 +02:00
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
if [ ${PATCH_DEBUG_TMP} = yes ]; then \
|
2002-11-26 16:19:50 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patch $$i" ; \
|
1999-07-26 18:46:43 +02:00
|
|
|
fi; \
|
2002-04-25 02:02:41 +02:00
|
|
|
fuzz=""; \
|
|
|
|
${PATCH} -v > /dev/null 2>&1 && fuzz="${PATCH_FUZZ_FACTOR}"; \
|
|
|
|
${PATCH} $$fuzz ${PATCH_ARGS} < $$i || \
|
2004-08-25 06:09:10 +02:00
|
|
|
{ ${ECHO} Patch $$i failed ; ${PKGSRC_PATCH_FAIL}; }; \
|
2002-04-25 02:02:41 +02:00
|
|
|
done; \
|
|
|
|
if [ "X$$fail" != "X" ]; then \
|
|
|
|
${ECHO_MSG} "Patching failed due to modified patch file(s): $$fail"; \
|
2004-08-25 06:09:10 +02:00
|
|
|
${PKGSRC_PATCH_FAIL}; \
|
1999-07-09 15:14:21 +02:00
|
|
|
fi; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2001-11-30 04:48:14 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# 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
|
|
|
|
_REPLACE_LOCALEDIR_PATTERNS_FIND= \
|
|
|
|
\( ${_REPLACE_LOCALEDIR_PATTERNS:S/$/!/:S/^/-o -name !/:S/!/"/g:S/-o//1} \)
|
|
|
|
REPLACE_LOCALEDIR?= # empty
|
|
|
|
_REPLACE_LOCALEDIR= \
|
|
|
|
${REPLACE_LOCALEDIR} \
|
|
|
|
`${FIND} . ${_REPLACE_LOCALEDIR_PATTERNS_FIND} -print | ${SED} -e 's|^\./||' | ${GREP} -v '\.orig' | ${SORT} -u`
|
|
|
|
|
|
|
|
_CONFIGURE_PREREQ+= subst-pkglocaledir
|
|
|
|
. if empty(USE_PKGLOCALEDIR:M[nN][oO])
|
|
|
|
SUBST_CLASSES+= pkglocaledir
|
|
|
|
. endif
|
|
|
|
SUBST_MESSAGE.pkglocaledir= "Fixing locale directory references."
|
|
|
|
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
|
2003-07-09 18:07:29 +02:00
|
|
|
_REPLACE.perl.old= .*/bin/perl
|
|
|
|
_REPLACE.perl.new= ${PERL5}
|
|
|
|
_REPLACE_FILES.perl= ${REPLACE_PERL}
|
|
|
|
.endif
|
|
|
|
|
2004-01-19 15:54:26 +01:00
|
|
|
.if defined(REPLACE_INTERPRETER)
|
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}
|
2004-03-02 16:25:23 +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 \
|
2004-03-02 16:25:23 +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}; \
|
|
|
|
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
|
|
|
.if defined(CONFIG_GUESS_OVERRIDE) || defined(CONFIG_SUB_OVERRIDE)
|
|
|
|
_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:
|
2004-02-14 14:58:34 +01:00
|
|
|
. if defined(CONFIG_GUESS_OVERRIDE) && !empty(CONFIG_GUESS_OVERRIDE)
|
2004-02-14 16:22:42 +01:00
|
|
|
. for _pattern_ in ${CONFIG_GUESS_OVERRIDE}
|
|
|
|
${_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.guess \
|
|
|
|
$$file; \
|
|
|
|
fi; \
|
2002-07-16 17:02:01 +02:00
|
|
|
done
|
2004-02-14 16:22:42 +01:00
|
|
|
. endfor
|
2002-07-18 12:21:18 +02:00
|
|
|
. endif
|
2004-02-14 14:58:34 +01:00
|
|
|
. if defined(CONFIG_SUB_OVERRIDE) && !empty(CONFIG_SUB_OVERRIDE)
|
2004-02-14 16:22:42 +01:00
|
|
|
. for _pattern_ in ${CONFIG_SUB_OVERRIDE}
|
|
|
|
${_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.sub \
|
|
|
|
$$file; \
|
|
|
|
fi; \
|
2002-07-16 17:02:01 +02:00
|
|
|
done
|
2004-02-14 16:22:42 +01:00
|
|
|
. endfor
|
2002-07-18 12:21:18 +02:00
|
|
|
. endif
|
2002-07-16 17:02:01 +02:00
|
|
|
.endif
|
|
|
|
|
2003-08-27 13:29:56 +02:00
|
|
|
PKGCONFIG_OVERRIDE_SED= \
|
2004-08-27 08:29:06 +02:00
|
|
|
-e 's|^\(Libs:.*[ ]\)-L\([ ]*[^ ]*\)\(.*\)$$|\1${COMPILER_RPATH_FLAG}\2 -L\2\3|'
|
2003-08-27 13:29:56 +02:00
|
|
|
|
|
|
|
.if defined(PKGCONFIG_OVERRIDE) && !empty(PKGCONFIG_OVERRIDE)
|
|
|
|
_CONFIGURE_PREREQ+= subst-pkgconfig
|
|
|
|
SUBST_CLASSES+= pkgconfig
|
|
|
|
SUBST_MESSAGE.pkgconfig= "Adding rpaths to pkgconfig files."
|
|
|
|
SUBST_FILES.pkgconfig= ${PKGCONFIG_OVERRIDE:S/^${WRKSRC}\///}
|
|
|
|
SUBST_SED.pkgconfig= ${PKGCONFIG_OVERRIDE_SED}
|
2002-10-30 03:25:29 +01:00
|
|
|
.endif
|
|
|
|
|
2003-07-08 11:20:30 +02:00
|
|
|
# By adding this target, it makes sure the 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)
|
2002-08-22 10:21:26 +02:00
|
|
|
. for DIR in ${CONFIGURE_DIRS}
|
2002-09-02 04:42:26 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} \
|
2004-02-14 03:28:19 +01:00
|
|
|
AWK="${AWK}" CC="${CC}" CFLAGS="${CFLAGS:M*}" CPPFLAGS="${CPPFLAGS:M*}" \
|
|
|
|
CXX="${CXX}" CXXFLAGS="${CXXFLAGS:M*}" FC="${FC}" F77="${FC}" FFLAGS="${FFLAGS:M*}" \
|
1999-03-31 12:59:44 +02:00
|
|
|
INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}" \
|
2000-05-02 20:44:37 +02:00
|
|
|
ac_given_INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}" \
|
1999-05-20 21:50:09 +02:00
|
|
|
INSTALL_DATA="${INSTALL_DATA}" \
|
1997-08-20 12:21:05 +02:00
|
|
|
INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
|
2004-05-12 03:37:42 +02:00
|
|
|
INSTALL_GAME="${INSTALL_GAME}" \
|
2004-08-04 17:29:13 +02:00
|
|
|
INSTALL_GAME_DATA="${INSTALL_GAME_DATA}" \
|
1999-05-20 21:21:02 +02:00
|
|
|
INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
|
2004-01-25 11:36:15 +01:00
|
|
|
${CONFIGURE_ENV} ${CONFIG_SHELL} \
|
|
|
|
${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS}
|
2002-08-22 10:21:26 +02:00
|
|
|
. endfor
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if defined(USE_IMAKE)
|
2002-12-29 20:02:06 +01:00
|
|
|
. for DIR in ${CONFIGURE_DIRS}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${DIR} && ${SETENV} ${SCRIPTS_ENV} XPROJECTROOT=${X11BASE} ${XMKMF}
|
|
|
|
. 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
|
|
|
|
|
2004-01-19 16:04:05 +01:00
|
|
|
.if defined(CONFIG_STATUS_OVERRIDE)
|
|
|
|
_CONFIGURE_POSTREQ+= do-config-status-override
|
|
|
|
.PHONY: do-config-status-override
|
2004-02-12 14:16:02 +01:00
|
|
|
do-config-status-override:
|
2004-02-14 14:54:28 +01:00
|
|
|
. for _pattern_ in ${CONFIG_STATUS_OVERRIDE}
|
2004-02-14 16:16:31 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
|
2004-02-14 14:54:28 +01:00
|
|
|
for file in ${_pattern_}; do \
|
2004-02-14 16:16:31 +01:00
|
|
|
if [ -f "$$file" ]; then \
|
2004-02-16 21:25:18 +01:00
|
|
|
${MV} -f $$file $$file.overridden; \
|
2004-02-28 08:12:21 +01:00
|
|
|
${AWK} '/ *-recheck *\| *--recheck.*\)/ { \
|
2004-02-27 17:50:48 +01:00
|
|
|
print; \
|
|
|
|
print " exit 0"; \
|
|
|
|
next; \
|
|
|
|
} \
|
|
|
|
{ print } \
|
|
|
|
' $$file.overridden > $$file; \
|
2004-02-14 16:16:31 +01:00
|
|
|
${CHMOD} +x $$file; \
|
2004-02-14 14:54:28 +01:00
|
|
|
fi; \
|
|
|
|
done
|
2004-02-12 14:16:02 +01:00
|
|
|
. endfor
|
|
|
|
.endif
|
2004-01-19 16:04:05 +01:00
|
|
|
|
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
|
|
|
|
|
2004-01-13 01:40:25 +01:00
|
|
|
BUILD_DIRS?= ${WRKSRC}
|
|
|
|
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:
|
2002-09-12 12:34:29 +02:00
|
|
|
. for DIR in ${BUILD_DIRS}
|
2004-01-13 01:40:25 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} -f ${MAKEFILE} ${ALL_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)
|
2002-11-07 05:22:29 +01:00
|
|
|
. for DIR in ${TEST_DIRS}
|
2004-01-13 01:40:25 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${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
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Install
|
|
|
|
|
2004-01-13 01:40:25 +01:00
|
|
|
INSTALL_DIRS?= ${BUILD_DIRS}
|
|
|
|
INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS}
|
2002-09-12 12:34:29 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-install
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(do-install)
|
|
|
|
do-install:
|
2002-09-12 12:34:29 +02:00
|
|
|
. for DIR in ${INSTALL_DIRS}
|
2004-01-13 01:40:25 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET}
|
2002-09-12 12:34:29 +02:00
|
|
|
. endfor
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Package
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: real-su-package
|
2001-09-12 12:38:12 +02:00
|
|
|
.if !target(real-su-package)
|
|
|
|
real-su-package: ${PLIST} ${DESCR}
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-11-29 14:18:22 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Building binary package for ${PKGNAME}"; \
|
2003-08-24 10:51:11 +02:00
|
|
|
if ${PKG_INFO} -qe ${PKGNAME}; then \
|
|
|
|
: The package is installed. ; \
|
|
|
|
else \
|
|
|
|
${ECHO_MSG} "=> ${PKGNAME} is not installed."; \
|
|
|
|
exit 1; \
|
|
|
|
fi; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ ! -d ${PKGREPOSITORY} ]; then \
|
|
|
|
${MKDIR} ${PKGREPOSITORY}; \
|
|
|
|
if [ $$? -ne 0 ]; then \
|
2000-11-29 14:18:22 +01:00
|
|
|
${ECHO_MSG} "=> Can't create directory ${PKGREPOSITORY}."; \
|
2002-05-03 14:44:01 +02:00
|
|
|
exit 1; \
|
|
|
|
fi; \
|
|
|
|
fi; \
|
|
|
|
if ${PKG_CREATE} ${PKG_ARGS_BINPKG} ${PKGFILE}; then \
|
|
|
|
${MAKE} ${MAKEFLAGS} package-links; \
|
|
|
|
else \
|
|
|
|
${MAKE} ${MAKEFLAGS} delete-package; \
|
|
|
|
exit 1; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2001-09-25 22:26:37 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${PACKAGE_COOKIE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(NO_BIN_ON_CDROM)
|
2000-07-20 14:33:43 +02:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be put on a CD-ROM:"
|
2000-08-19 17:32:15 +02:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> " ${NO_BIN_ON_CDROM:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. if defined(NO_BIN_ON_FTP)
|
2000-07-20 14:33:43 +02:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be made available through FTP:"
|
2000-08-19 17:32:15 +02:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> " ${NO_BIN_ON_FTP:Q}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2004-01-14 07:57:45 +01:00
|
|
|
. if defined(RECOMMENDED) && !empty(IGNORE_RECOMMENDED:M[yY][eE][sS])
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Warning: dependency recommendations are being ignored!"
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} should not be uploaded nor"
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> otherwise be used as a binary package!"
|
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2001-09-12 12:38:12 +02:00
|
|
|
# Some support rules for real-su-package
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: package-links
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(package-links)
|
|
|
|
package-links:
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} delete-package-links
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}for cat in ${CATEGORIES}; do \
|
|
|
|
if [ ! -d ${PACKAGES}/$$cat ]; then \
|
1999-03-09 12:14:52 +01:00
|
|
|
${MKDIR} ${PACKAGES}/$$cat; \
|
|
|
|
if [ $$? -ne 0 ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> Can't create directory ${PACKAGES}/$$cat."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
exit 1; \
|
|
|
|
fi; \
|
|
|
|
fi; \
|
2000-06-03 22:58:46 +02:00
|
|
|
${RM} -f ${PACKAGES}/$$cat/${PKGNAME}${PKG_SUFX}; \
|
1999-03-08 18:26:54 +01:00
|
|
|
${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \
|
1997-08-20 12:21:05 +02:00
|
|
|
done;
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: delete-package-links
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(delete-package-links)
|
|
|
|
delete-package-links:
|
2000-05-30 23:35:32 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}\
|
2004-01-26 22:10:31 +01:00
|
|
|
${FIND} ${PACKAGES} -type l -name ${PKGNAME}${PKG_SUFX} -print | ${XARGS} ${RM} -f
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: delete-package
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(delete-package)
|
|
|
|
delete-package:
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} delete-package-links
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PKGFILE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: real-su-install
|
2001-01-29 12:34:21 +01:00
|
|
|
real-su-install: ${MESSAGE}
|
2003-09-02 08:59:37 +02:00
|
|
|
.if !defined(NO_PKG_REGISTER) && !defined(FORCE_PKG_REGISTER) && \
|
|
|
|
(${PKG_INSTALLATION_TYPE} == "overwrite")
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(CONFLICTS)
|
2000-06-03 20:51:34 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${RM} -f ${WRKDIR}/.CONFLICTS
|
2001-07-19 00:43:32 +02:00
|
|
|
. for conflict in ${CONFLICTS}
|
2000-06-03 20:51:34 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 07:55:14 +02:00
|
|
|
found="`${PKG_BEST_EXISTS} \"${conflict}\" || ${TRUE}`"; \
|
1998-08-25 18:26:09 +02:00
|
|
|
if [ X"$$found" != X"" ]; then \
|
|
|
|
${ECHO} "$$found" >> ${WRKDIR}/.CONFLICTS; \
|
|
|
|
fi
|
2002-01-19 22:29:41 +01:00
|
|
|
. endfor
|
2000-06-03 20:51:34 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ -s ${WRKDIR}/.CONFLICTS ]; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
found=`${SED} -e s'|${_PKG_DBDIR}/||g' ${WRKDIR}/.CONFLICTS | tr '\012' ' '`; \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} conflicts with installed package(s): $$found found."; \
|
|
|
|
${ECHO_MSG} "*** They install the same files into the same place."; \
|
|
|
|
${ECHO_MSG} "*** Please remove $$found first with pkg_delete(1)."; \
|
1998-08-25 18:26:09 +02:00
|
|
|
${RM} -f ${WRKDIR}/.CONFLICTS; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif # CONFLICTS
|
2000-06-03 20:51:34 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 07:55:14 +02:00
|
|
|
found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
|
1999-02-16 04:23:04 +01:00
|
|
|
if [ "$$found" != "" ]; then \
|
2003-12-30 06:07:41 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
|
2003-03-19 02:19:30 +01:00
|
|
|
${ECHO_MSG} "*** If so, you may use either of:"; \
|
2004-02-05 18:20:46 +01:00
|
|
|
${ECHO_MSG} "*** - \"pkg_delete $$found\" and \"${MAKE} reinstall\" to upgrade properly"; \
|
2003-03-19 02:19:30 +01:00
|
|
|
${ECHO_MSG} "*** - \"${MAKE} update\" to rebuild the package and all of its dependencies"; \
|
|
|
|
${ECHO_MSG} "*** - \"${MAKE} replace\" to replace only the package without re-linking"; \
|
|
|
|
${ECHO_MSG} "*** dependencies, risking various problems."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
exit 1; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2003-09-02 08:59:37 +02:00
|
|
|
.endif # !NO_PKG_REGISTER && !NO_FORCE_REGISTER && overwrite
|
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
found="`${PKG_INFO} -e ${PKGNAME} || ${TRUE}`"; \
|
|
|
|
if [ "$$found" != "" ]; then \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed."; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
.endif
|
2001-05-20 02:54:09 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}if [ `${SH} -c umask` -ne ${DEF_UMASK} ]; then \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Warning: your umask is \"`${SH} -c umask`"\".; \
|
|
|
|
${ECHO_MSG} "If this is not desired, set it to an appropriate value (${DEF_UMASK})"; \
|
|
|
|
${ECHO_MSG} "and install this package again by \`\`${MAKE} deinstall reinstall''."; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2003-09-02 08:59:37 +02:00
|
|
|
.if defined(INSTALLATION_DIRS) && !empty(INSTALLATION_DIRS)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} "${_PKGSRC_IN}> Creating installation directories"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
for dir in ${INSTALLATION_DIRS}; do \
|
|
|
|
case $$dir in \
|
|
|
|
/*) ;; \
|
|
|
|
*bin|*bin/*|*libexec|*libexec/*) \
|
|
|
|
${INSTALL_PROGRAM_DIR} ${PREFIX}/$$dir ;; \
|
|
|
|
*man/*) \
|
|
|
|
${INSTALL_MAN_DIR} ${PREFIX}/$$dir ;; \
|
|
|
|
*) \
|
|
|
|
${INSTALL_DATA_DIR} ${PREFIX}/$$dir ;; \
|
|
|
|
esac; \
|
|
|
|
done
|
|
|
|
.endif # INSTALLATION_DIRS
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !defined(NO_MTREE)
|
2003-12-03 19:25:05 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ ! -f ${MTREE_FILE} ]; then \
|
1997-09-28 02:44:15 +02:00
|
|
|
${ECHO_MSG} "Error: mtree file \"${MTREE_FILE}\" is missing."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
exit 1; \
|
|
|
|
else \
|
|
|
|
if [ ! -d ${PREFIX} ]; then \
|
2001-06-12 15:17:01 +02:00
|
|
|
${MKDIR} ${PREFIX}; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
1999-06-23 19:06:20 +02:00
|
|
|
${MTREE} ${MTREE_ARGS} ${PREFIX}/; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
|
|
|
else \
|
1997-08-20 12:21:05 +02:00
|
|
|
${ECHO_MSG} "Warning: not superuser, can't run mtree."; \
|
2004-04-26 05:07:46 +02:00
|
|
|
${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2003-09-02 08:59:37 +02:00
|
|
|
.else
|
2003-09-02 14:01:14 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}[ -d ${PREFIX} ] || ${MKDIR} ${PREFIX}
|
1999-03-31 11:04:18 +02:00
|
|
|
.endif # !NO_MTREE
|
2002-06-22 04:48:35 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} pre-install-script
|
2002-01-27 20:07:41 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} pre-install
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} do-install
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} post-install
|
2004-03-11 20:37:20 +01:00
|
|
|
${_PKG_SILENT}${DO_NADA} \
|
|
|
|
# \
|
|
|
|
# PLIST must be generated at this late point (instead of \
|
|
|
|
# depending on it somewhere earlier), because it needs \
|
|
|
|
# to be created _after_ the {pre,do,post}-install \
|
|
|
|
# targets are run. \
|
|
|
|
# \
|
|
|
|
# We generate _before_ post-install-script is run so \
|
|
|
|
# that the real config files and rc.d scripts aren't \
|
|
|
|
# listed in the PLIST. \
|
|
|
|
#
|
2003-09-02 08:59:37 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} ${PLIST}
|
2002-06-22 04:48:35 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} post-install-script
|
2000-06-03 01:30:52 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}newmanpages=`${EGREP} -h \
|
1999-09-21 14:53:14 +02:00
|
|
|
'^([^@/]*/)*man/([^/]*/)?(man[1-9ln]/.*\.[1-9ln]|cat[1-9ln]/.*\.0)(\.gz)?$$' \
|
2000-02-12 18:24:41 +01:00
|
|
|
${PLIST} 2>/dev/null || ${TRUE}`; \
|
1998-06-18 13:45:33 +02:00
|
|
|
if [ X"${MANCOMPRESSED}" != X"" -a X"${MANZ}" = X"" ]; then \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]"; \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Decompressing manual pages for ${PKGNAME}"; \
|
1998-06-22 11:12:48 +02:00
|
|
|
for manpage in $$newmanpages; do \
|
1998-06-18 13:45:33 +02:00
|
|
|
manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
|
1999-08-24 21:03:08 +02:00
|
|
|
if [ -h ${PREFIX}/$$manpage.gz ]; then \
|
2003-12-28 22:20:02 +01:00
|
|
|
set - `${LS} -l ${PREFIX}/$$manpage.gz | ${SED} -e 's|\.gz$$||'`; \
|
1998-11-19 23:59:03 +01:00
|
|
|
shift `expr $$# - 1`; \
|
1999-03-09 16:31:59 +01:00
|
|
|
${RM} -f ${PREFIX}/$$manpage; \
|
|
|
|
${LN} -s $${1} ${PREFIX}/$$manpage; \
|
1998-11-19 23:59:03 +01:00
|
|
|
${RM} ${PREFIX}/$$manpage.gz; \
|
|
|
|
else \
|
|
|
|
${GUNZIP_CMD} ${PREFIX}/$$manpage.gz; \
|
|
|
|
fi; \
|
1998-06-18 13:45:33 +02:00
|
|
|
if [ X"${PKG_VERBOSE}" != X"" ]; then \
|
|
|
|
${ECHO_MSG} "$$manpage"; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
|
|
|
if [ X"${MANCOMPRESSED}" = X"" -a X"${MANZ}" != X"" ]; then \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]"; \
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Compressing manual pages for ${PKGNAME}"; \
|
1998-06-22 11:12:48 +02:00
|
|
|
for manpage in $$newmanpages; do \
|
1998-06-18 13:45:33 +02:00
|
|
|
manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
|
1999-08-24 21:03:08 +02:00
|
|
|
if [ -h ${PREFIX}/$$manpage ]; then \
|
2003-12-28 22:20:02 +01:00
|
|
|
set - `${LS} -l ${PREFIX}/$$manpage`; \
|
1998-06-18 13:45:33 +02:00
|
|
|
shift `expr $$# - 1`; \
|
1999-03-09 16:31:59 +01:00
|
|
|
${RM} -f ${PREFIX}/$$manpage.gz; \
|
|
|
|
${LN} -s $${1}.gz ${PREFIX}/$$manpage.gz; \
|
1998-06-18 13:45:33 +02:00
|
|
|
${RM} ${PREFIX}/$$manpage; \
|
|
|
|
else \
|
|
|
|
${GZIP_CMD} ${PREFIX}/$$manpage; \
|
|
|
|
fi; \
|
|
|
|
if [ X"${PKG_VERBOSE}" != X"" ]; then \
|
|
|
|
${ECHO_MSG} "$$manpage"; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
2000-06-03 01:30:52 +02:00
|
|
|
fi
|
2001-11-21 14:17:14 +01:00
|
|
|
.if ${_DO_SHLIB_CHECKS} == "yes"
|
2003-09-02 08:59:37 +02:00
|
|
|
. if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
2003-08-07 18:14:05 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-11-29 14:18:22 +01:00
|
|
|
${MAKE} ${MAKEFLAGS} do-shlib-handling SHLIB_PLIST_MODE=0
|
2003-09-02 08:59:37 +02:00
|
|
|
. endif
|
2001-11-21 14:17:14 +01:00
|
|
|
.endif
|
2001-01-29 12:34:21 +01:00
|
|
|
.ifdef MESSAGE
|
2000-11-29 14:18:22 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Please note the following:"
|
|
|
|
@${ECHO_MSG} ""
|
2001-01-29 12:34:21 +01:00
|
|
|
@${CAT} ${MESSAGE}
|
2000-11-29 14:18:22 +01:00
|
|
|
@${ECHO_MSG} ""
|
2003-08-07 18:14:05 +02:00
|
|
|
. if !empty(PKGSRC_MESSAGE_RECIPIENTS)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
(${ECHO} "The ${PKGNAME} package was installed on `${HOSTNAME_CMD}` at `date`"; \
|
|
|
|
${ECHO} ""; \
|
|
|
|
${ECHO} "Please note the following:"; \
|
|
|
|
${ECHO} ""; \
|
|
|
|
${CAT} ${MESSAGE}; \
|
|
|
|
${ECHO} "") | \
|
2004-01-27 17:11:47 +01:00
|
|
|
${MAIL_CMD} -s"Package ${PKGNAME} installed" ${PKGSRC_MESSAGE_RECIPIENTS}
|
2003-08-07 18:14:05 +02:00
|
|
|
. endif
|
2000-11-29 14:18:22 +01:00
|
|
|
.endif
|
|
|
|
.if !defined(NO_PKG_REGISTER)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} fake-pkg
|
|
|
|
.endif # !NO_PKG_REGISTER
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE}
|
|
|
|
.if defined(PKG_DEVELOPER) && (${CHECK_SHLIBS} == "YES")
|
2003-08-23 00:04:03 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} check-shlibs
|
2000-11-29 14:18:22 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Do handling of shared libs for two cases:
|
|
|
|
#
|
|
|
|
# SHLIB_PLIST_MODE=1: when first called via the ${PLIST} target,
|
|
|
|
# update the PLIST to contain ELF symlink, run
|
|
|
|
# ldconfig on a.out, etc. (used when called via
|
|
|
|
# the ${PLIST} target). Will update ${PLIST}.
|
|
|
|
# SHLIB_PLIST_MODE=0: when called via the real-su-install target,
|
|
|
|
# actually generate symlinks for ELF, run ldconfig
|
|
|
|
# for a.out, etc. Will not modify ${PLIST}.
|
|
|
|
#
|
|
|
|
# XXX This target could need some cleanup after it was ripped out of
|
|
|
|
# real-su-install
|
|
|
|
#
|
2003-12-03 19:31:06 +01:00
|
|
|
_AOUT_AWK = \
|
|
|
|
BEGIN { linkc = 1 } \
|
|
|
|
/^@/ { lines[NR] = $$0; next } \
|
|
|
|
function libtool_release(lib) { \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (gsub("-[^-]+\\.so\\.", ".so.", lib)) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \
|
|
|
|
rels[NR] = lib; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
libtool_release($$0); \
|
|
|
|
lines[NR] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
libtool_release($$0); \
|
|
|
|
lines[NR] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
{ lines[NR] = $$0 } \
|
|
|
|
END { \
|
|
|
|
for (i = 0 ; i <= linkc ; i++) \
|
|
|
|
for (j = 1 ; j < NR ; j++) \
|
|
|
|
if (lines[j] == links[i]) \
|
|
|
|
lines[j] = "@comment " lines[j]; \
|
|
|
|
if (${SHLIB_PLIST_MODE}) \
|
|
|
|
for (i = 1 ; i <= NR ; i++) { \
|
|
|
|
print lines[i]; \
|
|
|
|
if (rels[i] != "") \
|
|
|
|
print rels[i]; \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
|
|
|
_DYLIB_AWK= \
|
|
|
|
/^@/ { lines[NR] = $$0; next } \
|
|
|
|
function libtool_release(lib) { \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (gsub("\\.so\\.", ".", lib) || gsub("\\.so$$", "", lib)) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
lib = lib ".dylib"; \
|
|
|
|
if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \
|
|
|
|
rels[NR] = lib; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
libtool_release($$0); \
|
|
|
|
lines[NR] = $$0; \
|
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
libtool_release($$0); \
|
|
|
|
lines[NR] = $$0; \
|
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+$$/ { \
|
|
|
|
libtool_release($$0); \
|
|
|
|
lines[NR] = $$0; \
|
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so$$/ { \
|
|
|
|
lines[NR] = $$0; \
|
2004-07-03 23:59:04 +02:00
|
|
|
if (system("${TEST} -f ${PREFIX}/" $$0) == 0) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
next; \
|
|
|
|
} \
|
|
|
|
libtool_release($$0); \
|
|
|
|
links[linkc++] = $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (sub("-[^-]+\\.so$$", ".so")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
links[linkc++] = $$0; \
|
|
|
|
} \
|
|
|
|
next \
|
|
|
|
} \
|
|
|
|
{ lines[NR] = $$0 } \
|
|
|
|
END { \
|
|
|
|
for (i = 0 ; i <= linkc ; i++) \
|
|
|
|
for (j = 1 ; j <= NR ; j++) \
|
|
|
|
if (lines[j] == links[i]) \
|
|
|
|
lines[j] = "@comment " lines[j]; \
|
|
|
|
if (${SHLIB_PLIST_MODE}) \
|
|
|
|
for (i = 1 ; i <= NR ; i++) { \
|
|
|
|
print lines[i]; \
|
|
|
|
if (rels[i] != "") { \
|
|
|
|
print rels[i]; \
|
2004-03-17 17:36:28 +01:00
|
|
|
cmd = "${LS} -l ${PREFIX}/" rels[i]; \
|
|
|
|
cmd | getline tgt; \
|
|
|
|
close(cmd); \
|
2003-12-03 19:31:06 +01:00
|
|
|
gsub(".* ", "", tgt); \
|
|
|
|
if (tgts[tgt] == "") { \
|
|
|
|
tgts[tgt] = tgt; \
|
2003-12-04 12:17:40 +01:00
|
|
|
if (index(tgt, "/") == 1) \
|
|
|
|
print tgt; \
|
|
|
|
else { \
|
|
|
|
prefix=""; \
|
|
|
|
if (match(rels[i], ".*/") != 0) \
|
|
|
|
prefix=substr(rels[i],1,RLENGTH); \
|
|
|
|
print prefix tgt; \
|
|
|
|
} \
|
2003-12-03 19:31:06 +01:00
|
|
|
} \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
|
|
|
# Turn lib*.so.*, lib*.so into lib*.a. Drop duplicates.
|
|
|
|
_AIXLIB_AWK= \
|
|
|
|
/^@/ { lines[NR] = $$0; next } \
|
2003-12-04 12:17:40 +01:00
|
|
|
/.*\/lib[^\/]+\.so(\.[0-9]+)*$$/ { \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("(\\.[0-9]+)*$$", ""); \
|
|
|
|
sub("\\.so$$", ".a"); \
|
2003-12-04 12:17:40 +01:00
|
|
|
lines[NR] = $$0; \
|
2003-12-03 19:31:06 +01:00
|
|
|
next \
|
|
|
|
} \
|
|
|
|
{ lines[NR] = $$0 } \
|
|
|
|
END { \
|
2003-12-04 12:17:40 +01:00
|
|
|
nlibs = 0; \
|
|
|
|
for (i = 1; i <= NR; i++) { \
|
|
|
|
for (j = 0; j < nlibs; j++) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
if (libs[j] == lines[i]) \
|
2003-12-04 12:17:40 +01:00
|
|
|
break; \
|
|
|
|
} \
|
|
|
|
if (j >= nlibs) \
|
|
|
|
print lines[i]; \
|
2003-12-13 01:34:39 +01:00
|
|
|
if (match(lines[i], ".*/lib[^/]+\\.a$$")) { \
|
2003-12-03 19:31:06 +01:00
|
|
|
libs[nlibs] = lines[i]; \
|
2003-12-04 12:17:40 +01:00
|
|
|
nlibs++; \
|
|
|
|
} \
|
|
|
|
} \
|
2003-12-03 19:31:06 +01:00
|
|
|
}
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-shlib-handling
|
2000-11-29 14:18:22 +01:00
|
|
|
do-shlib-handling:
|
2000-12-31 13:21:07 +01:00
|
|
|
.if ${SHLIB_HANDLING} == "YES"
|
2000-06-03 01:30:52 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2004-04-11 22:17:37 +02:00
|
|
|
sos=`${EGREP} -h '^.*/lib[^/]+\.so$$' ${PLIST} || ${TRUE}`; \
|
2000-11-29 14:18:22 +01:00
|
|
|
if [ "$$sos" != "" ]; then \
|
2004-01-10 10:52:56 +01:00
|
|
|
shlib_type=`${MAKE} ${MAKEFLAGS} show-shlib-type`; \
|
2001-01-04 16:10:17 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \
|
2004-01-10 10:52:56 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> [Automatic $$shlib_type shared object handling]"; \
|
2001-01-04 16:10:17 +01:00
|
|
|
fi; \
|
2004-01-10 10:52:56 +01:00
|
|
|
case "$$shlib_type" in \
|
2001-01-04 16:10:17 +01:00
|
|
|
ELF) ;; \
|
|
|
|
"a.out") \
|
2003-12-04 12:17:40 +01:00
|
|
|
${AWK} '${_AOUT_AWK}' <${PLIST} >${PLIST}.tmp ; \
|
2001-01-04 16:10:17 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \
|
|
|
|
${MV} ${PLIST}.tmp ${PLIST}; \
|
|
|
|
else \
|
|
|
|
${RM} ${PLIST}.tmp ; \
|
2000-11-29 14:18:22 +01:00
|
|
|
fi ; \
|
2004-04-11 22:17:37 +02:00
|
|
|
cnt=`${EGREP} -c '^@exec[ ]*${LDCONFIG}$$' ${PLIST} || ${TRUE}`; \
|
2000-11-29 14:18:22 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \
|
|
|
|
if [ $$cnt -eq 0 ]; then \
|
|
|
|
${ECHO} "@exec ${LDCONFIG}" >> ${PLIST}; \
|
|
|
|
${ECHO} "@unexec ${LDCONFIG}" >> ${PLIST}; \
|
|
|
|
fi \
|
1998-07-14 13:36:11 +02:00
|
|
|
fi; \
|
2000-11-29 14:18:22 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \
|
|
|
|
if [ "${PKG_VERBOSE}" != "" ]; then \
|
|
|
|
${ECHO_MSG} "$$sos"; \
|
|
|
|
${ECHO_MSG} "Running ${LDCONFIG}"; \
|
|
|
|
fi; \
|
|
|
|
${LDCONFIG} || ${TRUE}; \
|
|
|
|
fi \
|
1998-07-14 17:53:54 +02:00
|
|
|
;; \
|
2001-12-05 17:42:46 +01:00
|
|
|
"dylib") \
|
2003-12-04 12:17:40 +01:00
|
|
|
${AWK} '${_DYLIB_AWK}' <${PLIST} >${PLIST}.tmp && \
|
2001-12-05 17:42:46 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \
|
|
|
|
${MV} ${PLIST}.tmp ${PLIST}; \
|
2003-12-03 19:31:06 +01:00
|
|
|
else \
|
2001-12-05 17:42:46 +01:00
|
|
|
${RM} ${PLIST}.tmp ; \
|
2003-12-03 19:31:06 +01:00
|
|
|
fi ; \
|
2001-12-05 17:42:46 +01:00
|
|
|
;; \
|
2003-12-03 19:31:06 +01:00
|
|
|
"aixlib") \
|
2003-12-04 12:17:40 +01:00
|
|
|
${AWK} '${_AIXLIB_AWK}' <${PLIST} >${PLIST}.tmp && \
|
|
|
|
${MV} ${PLIST}.tmp ${PLIST}; \
|
|
|
|
;; \
|
1999-03-08 18:26:54 +01:00
|
|
|
"*") \
|
2000-11-29 14:18:22 +01:00
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \
|
|
|
|
${ECHO_MSG} "No shared libraries for ${MACHINE_ARCH}"; \
|
|
|
|
fi ; \
|
|
|
|
if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \
|
|
|
|
for so in $$sos; do \
|
|
|
|
if [ X"${PKG_VERBOSE}" != X"" ]; then \
|
|
|
|
${ECHO_MSG} >&2 "Ignoring $$so"; \
|
|
|
|
fi; \
|
|
|
|
${SED} -e "s;^$$so$$;@comment No shared objects - &;" \
|
2001-01-29 15:40:26 +01:00
|
|
|
${PLIST} >${PLIST}.tmp && ${MV} ${PLIST}.tmp ${PLIST}; \
|
2000-11-29 14:18:22 +01:00
|
|
|
done; \
|
|
|
|
fi ; \
|
1998-07-14 17:53:54 +02:00
|
|
|
;; \
|
|
|
|
esac; \
|
2000-06-03 01:30:52 +02:00
|
|
|
fi
|
2000-12-31 13:21:07 +01:00
|
|
|
.endif # SHLIB_HANDLING == "YES"
|
1999-03-31 11:04:18 +02:00
|
|
|
|
2000-06-27 22:14:45 +02:00
|
|
|
|
|
|
|
# Check if all binaries and shlibs find their needed libs
|
|
|
|
# Must be run after "make install", so that files are installed, and
|
|
|
|
# ${PLIST} exists.
|
|
|
|
#
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: check-shlibs
|
2000-06-27 22:14:45 +02:00
|
|
|
check-shlibs:
|
2001-03-07 01:26:26 +01:00
|
|
|
.if !defined(NO_PKG_REGISTER)
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2001-04-03 14:06:31 +02:00
|
|
|
bins=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/(bin|sbin|libexec)/' || ${TRUE}; }`; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ "${OBJECT_FMT}" = "ELF" ]; then \
|
2001-04-03 14:06:31 +02:00
|
|
|
shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.so' || ${TRUE}; }`; \
|
2003-08-23 11:11:19 +02:00
|
|
|
elif [ "${OBJECT_FMT}" = "Mach-O" ]; then \
|
|
|
|
shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.dylib' || ${TRUE}; }`; \
|
2002-05-03 14:44:01 +02:00
|
|
|
else \
|
|
|
|
shlibs=""; \
|
|
|
|
fi; \
|
2003-08-23 11:11:19 +02:00
|
|
|
if [ "X${LDD}" = X ]; then \
|
2003-08-22 15:32:40 +02:00
|
|
|
ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;\
|
2002-05-03 14:44:01 +02:00
|
|
|
else \
|
|
|
|
ldd="${LDD}"; \
|
|
|
|
fi; \
|
2003-08-22 15:32:40 +02:00
|
|
|
if [ -x "$$ldd" ]; then \
|
|
|
|
for i in $${bins} $${shlibs}; do \
|
|
|
|
err=`{ $$ldd $$i 2>&1 || ${TRUE}; } | { ${GREP} "not found" || ${TRUE}; }`; \
|
|
|
|
if [ "${PKG_VERBOSE}" != "" ]; then \
|
|
|
|
${ECHO} "$$ldd $$i"; \
|
|
|
|
fi; \
|
|
|
|
if [ "$$err" != "" ]; then \
|
|
|
|
${ECHO} "$$i: $$err"; \
|
|
|
|
error=1; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ "$$error" = 1 ]; then \
|
2000-06-27 22:14:45 +02:00
|
|
|
${ECHO} "*** The above programs/libs will not find the listed shared libraries"; \
|
2002-05-03 14:44:01 +02:00
|
|
|
${ECHO} " at runtime. Please fix the package (add -Wl,-R.../lib in the right places)!"; \
|
2000-06-27 22:14:45 +02:00
|
|
|
${SHCOMMENT} Might not error-out for non-pkg-developers; \
|
2002-05-03 14:44:01 +02:00
|
|
|
exit 1; \
|
2000-06-27 22:14:45 +02:00
|
|
|
fi
|
2001-03-07 01:26:26 +01:00
|
|
|
.endif # NO_PKG_REGISTER
|
2000-06-27 22:14:45 +02:00
|
|
|
|
2004-01-10 10:52:56 +01:00
|
|
|
|
|
|
|
.if !target(show-shlib-type)
|
|
|
|
# Show the shared lib type being built: one of ELF, a.out, dylib, or none
|
|
|
|
.PHONY: show-shlib-type
|
|
|
|
show-shlib-type:
|
2004-02-06 04:10:29 +01:00
|
|
|
. if empty(USE_LANGUAGES)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO} "none"
|
2004-03-11 23:57:22 +01:00
|
|
|
. elif ${_OPSYS_SHLIB_TYPE} == "ELF/a.out"
|
2004-01-10 10:52:56 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
cd ${WRKDIR} && \
|
|
|
|
sotype=none; \
|
|
|
|
if [ "X${MKPIC}" != "Xno" -a "X${NOPIC}" = "X" ]; then \
|
2004-01-12 11:08:37 +01:00
|
|
|
${ECHO} "int main() { return(0); }" > a.$$$$.c; \
|
2004-02-05 08:37:48 +01:00
|
|
|
${SETENV} PATH=${PATH} \
|
2004-01-10 10:52:56 +01:00
|
|
|
${CC} ${CFLAGS} a.$$$$.c -o a.$$$$.out; \
|
|
|
|
case `${FILE_CMD} a.$$$$.out` in \
|
|
|
|
*ELF*dynamically*) \
|
|
|
|
sotype=ELF ;; \
|
|
|
|
*shared*library*) \
|
|
|
|
sotype="a.out" ;; \
|
|
|
|
*dynamically*) \
|
|
|
|
sotype="a.out" ;; \
|
|
|
|
esac; \
|
|
|
|
fi; \
|
|
|
|
${ECHO} "$$sotype"; \
|
|
|
|
${RM} -f a.$$$$.c a.$$$$.out
|
2004-03-11 23:57:22 +01:00
|
|
|
. else
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${_OPSYS_SHLIB_TYPE}
|
2004-02-06 04:10:29 +01:00
|
|
|
. endif # USE_LANGUAGES
|
2004-01-10 10:52:56 +01:00
|
|
|
.endif
|
|
|
|
|
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: acquire-extract-lock acquire-patch-lock acquire-tools-lock
|
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
|
2004-09-11 09:26:03 +02:00
|
|
|
.PHONY: acquire-install-lock acquire-package-lock
|
2002-01-19 22:29:41 +01:00
|
|
|
acquire-extract-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
|
|
|
acquire-patch-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
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
|
|
|
acquire-tools-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
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
|
|
|
acquire-wrapper-lock:
|
2002-08-22 10:21:26 +02:00
|
|
|
${_ACQUIRE_LOCK}
|
2002-01-19 22:29:41 +01:00
|
|
|
acquire-configure-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
|
|
|
acquire-build-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
2004-09-11 09:26:03 +02:00
|
|
|
acquire-install-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
|
|
|
acquire-package-lock:
|
|
|
|
${_ACQUIRE_LOCK}
|
2002-01-19 22:29:41 +01:00
|
|
|
|
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: release-extract-lock release-patch-lock release-tools-lock
|
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
|
2004-09-11 09:26:03 +02:00
|
|
|
.PHONY: release-install-lock release-package-lock
|
2002-01-19 22:29:41 +01:00
|
|
|
release-extract-lock:
|
|
|
|
${_RELEASE_LOCK}
|
|
|
|
release-patch-lock:
|
|
|
|
${_RELEASE_LOCK}
|
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
|
|
|
release-tools-lock:
|
|
|
|
${_RELEASE_LOCK}
|
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
|
|
|
release-wrapper-lock:
|
2002-08-22 10:21:26 +02:00
|
|
|
${_RELEASE_LOCK}
|
2002-01-19 22:29:41 +01:00
|
|
|
release-configure-lock:
|
|
|
|
${_RELEASE_LOCK}
|
|
|
|
release-build-lock:
|
|
|
|
${_RELEASE_LOCK}
|
2004-09-11 09:26:03 +02:00
|
|
|
release-install-lock:
|
|
|
|
${_RELEASE_LOCK}
|
|
|
|
release-package-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.
|
|
|
|
################################################################
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: fetch
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(fetch)
|
|
|
|
fetch:
|
2004-01-27 03:36:59 +01:00
|
|
|
@cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-fetch PKG_PHASE=fetch
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: extract
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(extract)
|
2002-01-19 22:29:41 +01:00
|
|
|
extract: checksum ${WRKDIR} acquire-extract-lock ${EXTRACT_COOKIE} release-extract-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: patch
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(patch)
|
2002-01-19 22:29:41 +01:00
|
|
|
patch: extract acquire-patch-lock ${PATCH_COOKIE} release-patch-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
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: tools
|
|
|
|
.if !target(tools)
|
|
|
|
tools: patch acquire-tools-lock ${TOOLS_COOKIE} release-tools-lock
|
|
|
|
.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
|
|
|
.PHONY: wrapper
|
|
|
|
.if !target(wrapper)
|
|
|
|
wrapper: tools 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)
|
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 acquire-configure-lock ${CONFIGURE_COOKIE} release-configure-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: build
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(build)
|
2002-01-19 22:29:41 +01:00
|
|
|
build: configure acquire-build-lock ${BUILD_COOKIE} release-build-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: test
|
2002-11-07 05:22:29 +01:00
|
|
|
.if !target(test)
|
|
|
|
test: build ${TEST_COOKIE}
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: install
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(install)
|
2004-09-11 09:26:03 +02:00
|
|
|
install: uptodate-pkgtools ${_PKGSRC_BUILD_TARGETS} acquire-install-lock ${INSTALL_COOKIE} release-install-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: package
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(package)
|
2004-09-11 09:26:03 +02:00
|
|
|
package: uptodate-pkgtools install acquire-package-lock ${PACKAGE_COOKIE} release-package-lock
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: replace
|
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
|
|
|
.if !target(replace)
|
|
|
|
replace: uptodate-pkgtools build real-replace
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: undo-replace
|
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
|
|
|
.if !target(undo-replace)
|
|
|
|
undo-replace: uptodate-pkgtools real-undo-replace
|
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${EXTRACT_COOKIE}:
|
2003-05-11 09:06:23 +02:00
|
|
|
.if ${INTERACTIVE_STAGE:Mextract} == "extract" && defined(BATCH)
|
|
|
|
@${ECHO} "*** The extract stage of this package requires user interaction"
|
|
|
|
@${ECHO} "*** Please extract manually with \"cd ${PKGDIR} && ${MAKE} extract\""
|
|
|
|
@${TOUCH} ${INTERACTIVE_COOKIE}
|
|
|
|
@${FALSE}
|
|
|
|
.else
|
2004-04-05 10:06:07 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-extract DEPENDS_TARGET=${DEPENDS_TARGET:Q} PKG_PHASE=extract
|
2003-05-11 09:06:23 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${PATCH_COOKIE}:
|
2004-01-21 19:13:27 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-patch PKG_PHASE=patch
|
2003-05-11 09:06:23 +02:00
|
|
|
|
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
|
|
|
${TOOLS_COOKIE}:
|
2004-01-21 19:13:27 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-tools PKG_PHASE=tools
|
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
|
|
|
|
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}:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-wrapper PKG_PHASE=wrapper
|
2003-05-11 09:06:23 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${CONFIGURE_COOKIE}:
|
2002-07-02 13:26:05 +02:00
|
|
|
.if ${INTERACTIVE_STAGE:Mconfigure} == "configure" && defined(BATCH)
|
|
|
|
@${ECHO} "*** The configuration stage of this package requires user interaction"
|
2002-07-03 08:58:31 +02:00
|
|
|
@${ECHO} "*** Please configure manually with \"cd ${PKGDIR} && ${MAKE} configure\""
|
2002-07-21 13:53:18 +02:00
|
|
|
@${TOUCH} ${INTERACTIVE_COOKIE}
|
2002-07-02 13:26:05 +02:00
|
|
|
@${FALSE}
|
|
|
|
.else
|
2004-02-21 13:29:23 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-configure PKG_PHASE=configure
|
2002-07-02 13:26:05 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${BUILD_COOKIE}:
|
2002-07-02 13:26:05 +02:00
|
|
|
.if ${INTERACTIVE_STAGE:Mbuild} == "build" && defined(BATCH)
|
|
|
|
@${ECHO} "*** The build stage of this package requires user interaction"
|
|
|
|
@${ECHO} "*** Please build manually with \"cd ${PKGDIR} && ${MAKE} build\""
|
2002-07-21 13:53:18 +02:00
|
|
|
@${TOUCH} ${INTERACTIVE_COOKIE}
|
2002-07-02 13:26:05 +02:00
|
|
|
@${FALSE}
|
|
|
|
.else
|
2004-02-21 13:29:23 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-build PKG_PHASE=build
|
2002-07-02 13:26:05 +02:00
|
|
|
.endif
|
|
|
|
|
2002-11-07 05:22:29 +01: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
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${INSTALL_COOKIE}:
|
2002-07-02 13:26:05 +02:00
|
|
|
.if ${INTERACTIVE_STAGE:Minstall} == "install" && defined(BATCH)
|
|
|
|
@${ECHO} "*** The installation stage of this package requires user interaction"
|
|
|
|
@${ECHO} "*** Please install manually with \"cd ${PKGDIR} && ${MAKE} install\""
|
2002-07-21 13:53:18 +02:00
|
|
|
@${TOUCH} ${INTERACTIVE_COOKIE}
|
2002-07-02 13:26:05 +02:00
|
|
|
@${FALSE}
|
|
|
|
.else
|
2004-02-21 13:29:23 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-install PKG_PHASE=install
|
2002-07-02 13:26:05 +02:00
|
|
|
.endif
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
${PACKAGE_COOKIE}:
|
2004-02-21 13:29:23 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${BUILD_ENV} ${MAKE} ${MAKEFLAGS} real-package PKG_PHASE=package
|
1997-08-20 12:21:05 +02: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: extract-message patch-message tools-message 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
|
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
|
|
|
extract-message:
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Extracting 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
|
|
|
patch-message:
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Patching for ${PKGNAME}"
|
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
|
|
|
tools-message:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Overriding tools for ${PKGNAME}"
|
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:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> 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:
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> 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:
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Building for ${PKGNAME}"
|
2002-11-07 05:22:29 +01:00
|
|
|
test-message:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> 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
|
|
|
|
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: extract-cookie patch-cookie tools-cookie 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
|
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
|
|
|
extract-cookie:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >> ${EXTRACT_COOKIE}
|
|
|
|
patch-cookie:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${PATCH_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
|
|
|
tools-cookie:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${TOOLS_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:
|
|
|
|
${_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:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${CONFIGURE_COOKIE}
|
|
|
|
build-cookie:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${BUILD_COOKIE}
|
2002-11-07 05:22:29 +01:00
|
|
|
test-cookie:
|
|
|
|
${_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
|
|
|
|
|
|
|
.ORDER: pre-fetch do-fetch post-fetch
|
|
|
|
.ORDER: extract-message install-depends pre-extract do-extract post-extract extract-cookie
|
|
|
|
.ORDER: patch-message pre-patch do-patch post-patch patch-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
|
|
|
.ORDER: tools-message pre-tools do-tools post-tools tools-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
|
|
|
.ORDER: wrapper-message pre-wrapper do-wrapper post-wrapper wrapper-cookie
|
2003-07-08 11:20:30 +02:00
|
|
|
.ORDER: configure-message pre-configure pre-configure-override do-configure post-configure 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
|
|
|
.ORDER: build-message 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)
|
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: real-fetch real-extract real-patch
|
|
|
|
.PHONY: real-tools real-wrapper
|
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: real-configure real-build real-test real-install real-package
|
|
|
|
.PHONY: real-replace real-undo-replace
|
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
|
|
|
real-fetch: pre-fetch do-fetch post-fetch
|
|
|
|
real-extract: extract-message install-depends pre-extract do-extract post-extract extract-cookie
|
|
|
|
real-patch: patch-message pre-patch do-patch post-patch patch-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
|
|
|
real-tools: tools-message pre-tools do-tools post-tools tools-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
|
|
|
real-wrapper: wrapper-message pre-wrapper do-wrapper post-wrapper wrapper-cookie
|
2003-07-08 11:20:30 +02:00
|
|
|
real-configure: configure-message pre-configure pre-configure-override do-configure post-configure 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
|
|
|
real-build: build-message pre-build do-build post-build build-cookie
|
2002-11-07 05:22:29 +01:00
|
|
|
real-test: test-message pre-test do-test post-test test-cookie
|
2000-11-29 14:18:22 +01:00
|
|
|
real-install: do-su-install
|
2001-09-12 12:38:12 +02:00
|
|
|
real-package: do-su-package
|
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
|
|
|
real-replace: do-su-replace
|
|
|
|
real-undo-replace: do-su-undo-replace
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2001-09-12 12:38:12 +02:00
|
|
|
_SU_TARGET= \
|
2003-12-03 19:25:05 +01:00
|
|
|
if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then \
|
2001-09-12 12:38:12 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} $$realtarget; \
|
1999-04-06 16:11:10 +02:00
|
|
|
elif [ "X${BATCH}" != X"" ]; then \
|
2002-04-29 11:12:20 +02:00
|
|
|
${ECHO_MSG} "Warning: Batch mode, not superuser, can't run $$action for ${PKGNAME}."; \
|
2004-04-26 05:07:46 +02:00
|
|
|
${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
|
1999-03-31 11:04:18 +02:00
|
|
|
else \
|
1999-04-06 16:11:10 +02:00
|
|
|
args=""; \
|
|
|
|
if [ "X${FORCE_PKG_REGISTER}" != X"" ]; then \
|
|
|
|
args="FORCE_PKG_REGISTER=1"; \
|
|
|
|
fi; \
|
|
|
|
if [ "X${PKG_DEBUG_LEVEL}" != X"" ]; then \
|
|
|
|
args="$$args PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL}"; \
|
|
|
|
fi; \
|
|
|
|
if [ "X${PRE_ROOT_CMD}" != "X${TRUE}" ]; then \
|
|
|
|
${ECHO} "*** WARNING *** Running: ${PRE_ROOT_CMD}"; \
|
|
|
|
${PRE_ROOT_CMD}; \
|
|
|
|
fi; \
|
2004-04-26 05:07:46 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Becoming ${ROOT_USER}@`${HOSTNAME_CMD}` to $$action ${PKGBASE}."; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'` ";\
|
2002-07-23 21:10:27 +02:00
|
|
|
${SU_CMD} "cd ${.CURDIR}; ${SETENV} PATH=$${PATH}:${SU_CMD_PATH_APPEND} ${MAKE} $$args ${MAKEFLAGS} $$realtarget $$realflags"; \
|
1999-03-31 11:04:18 +02:00
|
|
|
fi
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-su-install
|
2003-03-30 07:06:49 +02:00
|
|
|
do-su-install:
|
2001-09-12 12:38:12 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
extractname=`${CAT} ${EXTRACT_COOKIE}`; \
|
|
|
|
case "$$extractname" in \
|
|
|
|
"") ${ECHO_MSG} "*** Warning: ${WRKDIR} may contain an older version of ${PKGBASE}" ;; \
|
|
|
|
"${PKGNAME}") ;; \
|
2002-04-18 22:54:51 +02:00
|
|
|
*) ${ECHO_MSG} "*** Warning: Package version $$extractname in ${WRKDIR}"; \
|
2001-09-12 12:38:12 +02:00
|
|
|
${ECHO_MSG} "*** Current version ${PKGNAME} in pkgsrc directory"; \
|
2002-04-18 22:54:51 +02:00
|
|
|
${ECHO_MSG} "*** Cleaning and rebuilding the newer version of the package..."; \
|
|
|
|
${MAKE} clean && ${MAKE} build ;; \
|
2001-09-12 12:38:12 +02:00
|
|
|
esac
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Installing for ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-install"; \
|
2001-10-01 23:15:11 +02:00
|
|
|
action="install"; \
|
2003-03-30 07:06:49 +02:00
|
|
|
${_SU_TARGET}
|
2001-09-12 12:38:12 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-su-package
|
2001-09-12 12:38:12 +02:00
|
|
|
do-su-package:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Packaging ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-package"; \
|
2001-10-01 23:15:11 +02:00
|
|
|
action="package"; \
|
2003-03-30 07:06:49 +02:00
|
|
|
${_SU_TARGET}
|
2001-09-12 12:38:12 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-su-replace
|
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
|
|
|
do-su-replace:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Replacing ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-replace"; \
|
|
|
|
action="replace"; \
|
2003-03-30 07:06:49 +02:00
|
|
|
${_SU_TARGET}
|
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
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: do-su-undo-replace
|
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
|
|
|
do-su-undo-replace:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Undoing Replacement of ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-undo-replace"; \
|
|
|
|
action="undo-replace"; \
|
2003-03-30 07:06:49 +02:00
|
|
|
${_SU_TARGET}
|
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
|
|
|
|
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
|
|
|
.for name in fetch extract patch tools wrapper configure build test install-script install package
|
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
|
|
|
|
|
|
|
|
# Reinstall
|
|
|
|
#
|
|
|
|
# Special target to re-run install
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: reinstall
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(reinstall)
|
2000-09-01 15:48:51 +02:00
|
|
|
reinstall:
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${INSTALL_COOKIE} ${PACKAGE_COOKIE} ${PLIST}
|
2004-04-05 10:06:07 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}DEPENDS_TARGET=${DEPENDS_TARGET:Q} ${MAKE} ${MAKEFLAGS} install
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1998-02-17 16:07:02 +01:00
|
|
|
# Deinstall
|
|
|
|
#
|
|
|
|
# Special target to remove installation
|
1999-03-08 18:26:54 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: deinstall do-su-deinstall
|
1998-02-17 16:07:02 +01:00
|
|
|
.if !target(deinstall)
|
2000-11-29 14:18:22 +01:00
|
|
|
deinstall: do-su-deinstall
|
1999-04-03 23:03:50 +02:00
|
|
|
|
2000-11-29 14:18:22 +01:00
|
|
|
do-su-deinstall: uptodate-pkgtools
|
2003-09-28 10:52:13 +02:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Deinstalling for ${PKGBASE}"
|
1999-04-03 23:03:50 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2001-09-12 12:38:12 +02:00
|
|
|
realtarget="real-su-deinstall"; \
|
|
|
|
realflags="DEINSTALLDEPENDS=${DEINSTALLDEPENDS}"; \
|
2001-10-01 23:15:11 +02:00
|
|
|
action="deinstall"; \
|
2003-03-30 07:06:49 +02:00
|
|
|
${_SU_TARGET}
|
1999-08-21 03:17:59 +02:00
|
|
|
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (${DEINSTALLDEPENDS} != "NO")
|
|
|
|
. if (${DEINSTALLDEPENDS} != "ALL")
|
1999-09-09 00:01:19 +02:00
|
|
|
# used for removing stuff in bulk builds
|
2000-11-29 14:18:22 +01:00
|
|
|
real-su-deinstall-flags+= -r -R
|
1999-09-09 00:01:19 +02:00
|
|
|
# used for "update" target
|
2001-07-19 00:43:32 +02:00
|
|
|
. else
|
2000-11-29 14:18:22 +01:00
|
|
|
real-su-deinstall-flags+= -r
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
|
|
|
. endif
|
|
|
|
. ifdef PKG_VERBOSE
|
2000-11-29 14:18:22 +01:00
|
|
|
real-su-deinstall-flags+= -v
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-08-21 03:17:59 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: real-su-deinstall
|
2000-11-29 14:18:22 +01:00
|
|
|
real-su-deinstall:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-05 17:00:10 +02:00
|
|
|
found="`${PKG_INFO} -e \"${PKGNAME}\" || ${TRUE}`"; \
|
|
|
|
case "$$found" in \
|
2003-09-13 07:55:14 +02:00
|
|
|
"") found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`" ;; \
|
2003-09-05 17:00:10 +02:00
|
|
|
esac; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ "$$found" != "" ]; then \
|
2000-11-29 14:18:22 +01:00
|
|
|
${ECHO} Running ${PKG_DELETE} ${real-su-deinstall-flags} $$found ; \
|
|
|
|
${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE} ; \
|
1999-08-21 03:17:59 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (${DEINSTALLDEPENDS} != "NO") && (${DEINSTALLDEPENDS} != "ALL")
|
2000-02-26 22:58:55 +01:00
|
|
|
@${SHCOMMENT} Also remove BUILD_DEPENDS:
|
2001-07-19 00:43:32 +02:00
|
|
|
. for pkg in ${BUILD_DEPENDS:C/:.*$//}
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 07:55:14 +02:00
|
|
|
found="`${PKG_BEST_EXISTS} \"${pkg}\" || ${TRUE}`"; \
|
2002-05-03 14:44:01 +02:00
|
|
|
if [ "$$found" != "" ]; then \
|
|
|
|
${ECHO} Running ${PKG_DELETE} $$found; \
|
|
|
|
${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE}; \
|
2000-02-26 22:58:55 +01:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor
|
|
|
|
. endif # DEINSTALLDEPENDS
|
1999-04-20 22:28:11 +02:00
|
|
|
@${RM} -f ${INSTALL_COOKIE} ${PACKAGE_COOKIE}
|
|
|
|
.endif # target(deinstall)
|
1999-03-03 23:53:49 +01:00
|
|
|
|
1999-10-31 20:43:02 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
################################################################
|
|
|
|
# Some more targets supplied for users' convenience
|
|
|
|
################################################################
|
|
|
|
|
1999-08-30 00:13:01 +02:00
|
|
|
# The 'update' target can be used to update a package and all
|
|
|
|
# currently installed packages that depend upon this package.
|
1999-10-31 20:43:02 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: update
|
2002-04-06 01:26:49 +02:00
|
|
|
.if !target(update)
|
1999-10-31 20:43:02 +01:00
|
|
|
.if exists(${DDIR})
|
|
|
|
RESUMEUPDATE?= YES
|
2000-07-18 10:33:49 +02:00
|
|
|
CLEAR_DIRLIST?= NO
|
1999-10-31 20:43:02 +01:00
|
|
|
|
|
|
|
update:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} \
|
2000-03-13 15:19:15 +01:00
|
|
|
"${_PKGSRC_IN}> Resuming update for ${PKGNAME}"
|
2003-05-04 03:20:13 +02:00
|
|
|
. if ${REINSTALL} != "NO" && ${UPDATE_TARGET} != "replace"
|
2000-07-21 08:30:04 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${MAKE} ${MAKEFLAGS} deinstall DEINSTALLDEPENDS=ALL
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-10-31 20:43:02 +01:00
|
|
|
.else
|
|
|
|
RESUMEUPDATE?= NO
|
2000-07-18 10:33:49 +02:00
|
|
|
CLEAR_DIRLIST?= YES
|
1999-10-31 20:43:02 +01:00
|
|
|
|
1999-08-30 00:13:01 +02:00
|
|
|
update:
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
|
2003-05-04 03:20:13 +02:00
|
|
|
. if ${UPDATE_TARGET} != "replace"
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}if ${PKG_INFO} -qe ${PKGBASE}; then \
|
|
|
|
${MAKE} ${MAKEFLAGS} deinstall DEINSTALLDEPENDS=ALL \
|
|
|
|
|| (${RM} ${DDIR} && ${FALSE}); \
|
2002-03-22 20:08:44 +01:00
|
|
|
fi
|
2003-05-04 03:20:13 +02:00
|
|
|
. endif
|
1999-10-31 20:43:02 +01:00
|
|
|
.endif
|
1999-08-30 00:13:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-10-22 10:22:24 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET} KEEP_WRKDIR=YES \
|
2004-04-05 10:06:07 +02:00
|
|
|
DEPENDS_TARGET=${DEPENDS_TARGET:Q}
|
1999-08-30 00:13:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-06-03 22:26:05 +02:00
|
|
|
[ ! -s ${DDIR} ] || for dep in `${CAT} ${DDIR}` ; do \
|
2002-05-03 14:44:01 +02:00
|
|
|
(if cd ../.. && cd "$${dep}" ; then \
|
2002-05-13 13:43:05 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Installing in $${dep}" && \
|
2003-05-04 03:20:13 +02:00
|
|
|
if [ "(" "${RESUMEUPDATE}" = "NO" -o \
|
|
|
|
"${REINSTALL}" != "NO" ")" -a \
|
|
|
|
"${UPDATE_TARGET}" != "replace" ] ; then \
|
2000-07-21 08:30:04 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} deinstall; \
|
1999-10-31 20:43:02 +01:00
|
|
|
fi && \
|
2000-10-22 10:22:24 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET} \
|
2004-04-05 10:06:07 +02:00
|
|
|
DEPENDS_TARGET=${DEPENDS_TARGET:Q} ; \
|
2000-02-01 17:30:07 +01:00
|
|
|
else \
|
2002-05-13 13:43:05 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}"; \
|
2000-02-01 17:30:07 +01:00
|
|
|
fi) ; \
|
|
|
|
done
|
1999-10-31 20:43:02 +01:00
|
|
|
.if ${NOCLEAN} == "NO"
|
2000-02-01 17:30:07 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
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
|
|
|
${MAKE} ${MAKEFLAGS} clean-update CLEAR_DIRLIST=YES
|
1999-10-31 20:43:02 +01:00
|
|
|
.endif
|
|
|
|
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: clean-update
|
1999-10-31 20:43:02 +01:00
|
|
|
clean-update:
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
|
1999-10-31 20:43:02 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if [ -s ${DDIR} ] ; then \
|
|
|
|
for dep in `${CAT} ${DDIR}` ; do \
|
2002-05-03 14:44:01 +02:00
|
|
|
(if cd ../.. && cd "$${dep}" ; then \
|
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
|
|
|
${MAKE} ${MAKEFLAGS} clean ; \
|
2000-02-01 17:30:07 +01:00
|
|
|
else \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}";\
|
2000-02-01 17:30:07 +01:00
|
|
|
fi) ; \
|
1999-10-31 20:43:02 +01:00
|
|
|
done ; \
|
|
|
|
fi
|
2000-07-18 10:33:49 +02:00
|
|
|
.if ${CLEAR_DIRLIST} != "NO"
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean
|
1999-10-31 20:43:02 +01:00
|
|
|
.else
|
2000-02-01 17:30:07 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
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
|
|
|
${MAKE} ${MAKEFLAGS} clean update-dirlist \
|
1999-10-31 20:43:02 +01:00
|
|
|
DIRLIST="`${CAT} ${DDIR}`" PKGLIST="`${CAT} ${DLIST}`"
|
2000-07-21 08:30:04 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} \
|
|
|
|
"${_PKGSRC_IN}> Warning: preserved leftover directory list. Your next";\
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> \`\`${MAKE} update'' may fail. It is advised to use";\
|
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> \`\`${MAKE} update REINSTALL=YES'' instead!"
|
1999-10-31 20:43:02 +01:00
|
|
|
.endif
|
|
|
|
|
2002-04-06 01:26:49 +02:00
|
|
|
.endif # !target(update)
|
|
|
|
|
1999-10-31 20:43:02 +01:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: update-dirlist
|
1999-10-31 20:43:02 +01:00
|
|
|
update-dirlist:
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} -p ${WRKDIR}
|
|
|
|
.ifdef PKGLIST
|
2001-07-19 00:43:32 +02:00
|
|
|
. for __tmp__ in ${PKGLIST}
|
1999-10-31 20:43:02 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DLIST} "${__tmp__}"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor
|
1999-10-31 20:43:02 +01:00
|
|
|
.endif
|
|
|
|
.ifdef DIRLIST
|
2001-07-19 00:43:32 +02:00
|
|
|
. for __tmp__ in ${DIRLIST}
|
1999-10-31 20:43:02 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DDIR} "${__tmp__}"
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor
|
1999-10-31 20:43:02 +01:00
|
|
|
.endif
|
|
|
|
|
1999-08-30 00:13:01 +02:00
|
|
|
|
|
|
|
${DDIR}: ${DLIST}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2001-01-29 15:40:26 +01:00
|
|
|
ddir=`${SED} 's:-[^-]*$$::' ${DLIST}`; \
|
2000-07-18 10:21:41 +02:00
|
|
|
${ECHO} >${DDIR}; \
|
|
|
|
for pkg in $${ddir} ; do \
|
2002-09-16 12:04:39 +02:00
|
|
|
if ${PKG_INFO} -b "$${pkg}" >/dev/null 2>&1 ; then \
|
|
|
|
${PKG_INFO} -b "$${pkg}" | ${SED} -ne \
|
2000-07-19 02:08:32 +02:00
|
|
|
's,\([^/]*/[^/]*\)/Makefile:.*,\1,p' | \
|
|
|
|
${HEAD} -1 >>${DDIR}; \
|
2000-07-18 10:21:41 +02:00
|
|
|
fi ; \
|
|
|
|
done
|
1999-08-30 00:13:01 +02:00
|
|
|
|
2002-04-18 17:54:34 +02:00
|
|
|
${DLIST}: ${WRKDIR}
|
1999-08-30 00:13:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2004-04-16 16:27:38 +02:00
|
|
|
{ ${PKG_DELETE} -n "${PKGWILDCARD}" 2>&1 | \
|
|
|
|
grep '^ ' | \
|
|
|
|
${AWK} '{ l[NR]=$$0 } END { for (i=NR;i>0;--i) print l[i] }' \
|
|
|
|
|| ${TRUE}; } > ${DLIST}
|
1999-08-30 00:13:01 +02:00
|
|
|
|
2000-07-30 10:52:41 +02:00
|
|
|
# The 'info' target can be used to display information about a package.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: info
|
2000-07-30 10:52:41 +02:00
|
|
|
info: uptodate-pkgtools
|
2002-09-16 12:04:39 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} "${PKGWILDCARD}"
|
2000-07-30 10:52:41 +02:00
|
|
|
|
2000-11-12 16:20:06 +01:00
|
|
|
# The 'check' target can be used to check an installed package.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: check
|
2000-11-12 16:20:06 +01:00
|
|
|
check: uptodate-pkgtools
|
2002-09-16 12:04:39 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check "${PKGWILDCARD}"
|
2000-11-12 16:20:06 +01:00
|
|
|
|
2002-09-08 08:59:26 +02:00
|
|
|
# The 'list' target can be used to list the files installed by a package.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: list
|
2002-09-08 08:59:26 +02:00
|
|
|
list: uptodate-pkgtools
|
2002-09-16 12:04:39 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} -L "${PKGWILDCARD}"
|
2002-09-08 08:59:26 +02:00
|
|
|
|
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:
|
2003-02-15 01:26:58 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint | ${GREP} -v ^OK
|
2001-07-10 13:51:57 +02:00
|
|
|
|
|
|
|
# Create a binary package from an install package using "pkg_tarup"
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: tarup
|
2001-07-10 13:51:57 +02:00
|
|
|
tarup:
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${RM} -f ${PACKAGES}/All/${PKGNAME}${PKG_SUFX}; \
|
2003-09-02 08:59:37 +02:00
|
|
|
${SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \
|
2002-05-03 14:44:01 +02:00
|
|
|
PKGREPOSITORY=${PACKAGES}/All \
|
|
|
|
${LOCALBASE}/bin/pkg_tarup ${PKGNAME}; \
|
|
|
|
for CATEGORY in ${CATEGORIES}; do \
|
|
|
|
${MKDIR} ${PACKAGES}/$$CATEGORY; \
|
|
|
|
cd ${PACKAGES}/$$CATEGORY; \
|
|
|
|
${RM} -f ${PKGNAME}${PKG_SUFX}; \
|
|
|
|
${LN} -s ../All/${PKGNAME}${PKG_SUFX}; \
|
2001-07-10 13:51:57 +02:00
|
|
|
done
|
2003-09-02 08:59:37 +02:00
|
|
|
.endif
|
2000-12-30 12:19:04 +01:00
|
|
|
|
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
|
|
|
# shared code for replace and undo-replace
|
|
|
|
_REPLACE= \
|
2003-09-02 08:59:37 +02:00
|
|
|
if [ -f ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ]; then \
|
|
|
|
${MV} ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ${WRKDIR}/.req; \
|
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
|
|
|
fi; \
|
|
|
|
${MAKE} deinstall; \
|
|
|
|
$$replace_action; \
|
|
|
|
if [ -f ${WRKDIR}/.req ]; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${MV} ${WRKDIR}/.req ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY; \
|
|
|
|
for pkg in `${CAT} ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY`; do \
|
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
|
|
|
${SETENV} NEWPKGNAME=$$newpkgname \
|
|
|
|
${AWK} '/^@pkgdep '$$oldpkgname'/ { print "@pkgdep " ENVIRON["NEWPKGNAME"]; next } { print }' \
|
2003-09-02 08:59:37 +02:00
|
|
|
< ${_PKG_DBDIR}/$$pkg/+CONTENTS > ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ && \
|
|
|
|
${MV} ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ ${_PKG_DBDIR}/$$pkg/+CONTENTS; \
|
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
|
|
|
done; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
# replace a package in place - not for the faint-hearted
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: real-su-replace
|
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
|
|
|
real-su-replace:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
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
|
|
|
${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
|
2002-04-02 11:41:39 +02:00
|
|
|
if [ -x ${LOCALBASE}/bin/pkg_tarup ]; then \
|
|
|
|
${SETENV} PKGREPOSITORY=${WRKDIR} ${LOCALBASE}/bin/pkg_tarup ${PKGBASE}; \
|
|
|
|
else \
|
|
|
|
${ECHO} "No ${LOCALBASE}/bin/pkg_tarup binary - can't pkg_tarup ${PKGBASE}"; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-13 20:26:15 +02:00
|
|
|
oldpkgname=`${PKG_BEST_EXISTS} "${PKGWILDCARD}"`; \
|
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
|
|
|
newpkgname=${PKGNAME}; \
|
|
|
|
${ECHO} "$$oldpkgname" > ${WRKDIR}/.replace; \
|
|
|
|
replace_action="${MAKE} install"; \
|
|
|
|
${_REPLACE}
|
|
|
|
|
|
|
|
# undo the replacement of a package - not for the faint-hearted either
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: real-su-undo-replace
|
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
|
|
|
real-su-undo-replace:
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
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
|
|
|
if [ ! -f ${WRKDIR}/.replace ]; then \
|
|
|
|
${ECHO_MSG} "No replacement to undo"; \
|
|
|
|
exit 1; \
|
2002-04-02 11:41:39 +02:00
|
|
|
fi
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
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
|
|
|
${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
|
|
|
|
oldpkgname=${PKGNAME}; \
|
|
|
|
newpkgname=`${CAT} ${WRKDIR}/.replace`; \
|
2002-04-02 11:41:39 +02:00
|
|
|
replace_action="${SETENV} ${PKG_ADD} ${WRKDIR}/$$newpkgname${PKG_SUFX}"; \
|
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
|
|
|
${_REPLACE}; \
|
|
|
|
${RM} ${WRKDIR}/.replace
|
|
|
|
|
1999-04-09 04:06:53 +02:00
|
|
|
# This is for the use of sites which store distfiles which others may
|
|
|
|
# fetch - only fetch the distfile if it is allowed to be
|
|
|
|
# re-distributed freely
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: mirror-distfiles
|
1999-04-09 04:06:53 +02:00
|
|
|
mirror-distfiles:
|
2000-08-19 17:32:15 +02:00
|
|
|
.if !defined(NO_SRC_ON_FTP)
|
2004-07-31 14:24:02 +02:00
|
|
|
@${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} fetch NO_SKIP=yes
|
1999-04-09 04:06:53 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Cleaning up
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: pre-clean
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(pre-clean)
|
|
|
|
pre-clean:
|
|
|
|
@${DO_NADA}
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: clean
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(clean)
|
|
|
|
clean: pre-clean
|
2001-07-19 00:43:32 +02:00
|
|
|
. if (${CLEANDEPENDS} != "NO") && (defined(BUILD_DEPENDS) || defined(DEPENDS))
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean-depends
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-03-13 15:19:15 +01:00
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Cleaning for ${PKGNAME}"
|
2000-06-03 21:20:55 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if [ -d ${WRKDIR} ]; then \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ -w ${WRKDIR} ]; then \
|
|
|
|
${RM} -rf ${WRKDIR}; \
|
|
|
|
else \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> ${WRKDIR} not writable, skipping"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. ifdef WRKOBJDIR
|
2000-06-03 21:20:55 +02:00
|
|
|
-${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-06-03 23:51:57 +02:00
|
|
|
${RMDIR} ${BUILD_DIR} 2>/dev/null; \
|
2000-06-03 21:20:55 +02:00
|
|
|
${RM} -f ${WRKDIR_BASENAME}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
2000-05-31 18:59:44 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: clean-depends
|
2000-05-31 18:59:44 +02:00
|
|
|
.if !target(clean-depends)
|
|
|
|
clean-depends:
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(BUILD_DEPENDS) || defined(DEPENDS)
|
2000-06-03 23:51:57 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-08-12 16:55:42 +02:00
|
|
|
for i in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs-excl` ;\
|
2000-06-28 18:05:44 +02:00
|
|
|
do \
|
|
|
|
cd ${.CURDIR}/../../$$i && \
|
|
|
|
${MAKE} ${MAKEFLAGS} CLEANDEPENDS=NO clean; \
|
2000-05-31 18:59:44 +02:00
|
|
|
done
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-06-28 19:35:53 +02:00
|
|
|
.endif
|
2000-05-31 18:59:44 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: pre-distclean
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(pre-distclean)
|
|
|
|
pre-distclean:
|
|
|
|
@${DO_NADA}
|
|
|
|
.endif
|
|
|
|
|
2000-05-31 18:59:44 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: cleandir
|
1998-10-04 22:56:58 +02:00
|
|
|
.if !target(cleandir)
|
|
|
|
cleandir: clean
|
|
|
|
.endif
|
|
|
|
|
2000-05-31 18:59:44 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: distclean
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(distclean)
|
|
|
|
distclean: pre-distclean clean
|
2000-03-13 15:19:15 +01:00
|
|
|
${_PKG_SILENT}${ECHO_MSG} "${_PKGSRC_IN}> Dist cleaning for ${PKGNAME}"
|
2000-06-03 01:30:52 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}if [ -d ${_DISTDIR} ]; then \
|
1999-03-08 18:26:54 +01:00
|
|
|
cd ${_DISTDIR} && \
|
|
|
|
${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES}; \
|
|
|
|
${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES}; \
|
2000-06-03 01:30:52 +02:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(DIST_SUBDIR) && exists(DIST_SUBDIR)
|
2003-03-30 07:06:49 +02:00
|
|
|
-${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-09-08 16:58:34 +02:00
|
|
|
-${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
# Prints out a script to fetch all needed files (no checksumming).
|
|
|
|
.PHONY: fetch-list
|
2003-07-24 00:02:48 +02:00
|
|
|
.if !target(fetch-list)
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
fetch-list:
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
@${ECHO} '#!/bin/sh'
|
|
|
|
@${ECHO} '#'
|
|
|
|
@${ECHO} '# This is an auto-generated script, the result of running'
|
2003-01-15 21:55:38 +01:00
|
|
|
@${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"'
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
@${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".'
|
|
|
|
@${ECHO} '#'
|
|
|
|
@${MAKE} ${MAKEFLAGS} fetch-list-recursive
|
1998-02-20 22:31:20 +01:00
|
|
|
.endif # !target(fetch-list)
|
|
|
|
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.PHONY: fetch-list-recursive
|
2003-07-24 00:02:48 +02:00
|
|
|
.if !target(fetch-list-recursive)
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
|
1998-02-20 22:31:20 +01:00
|
|
|
fetch-list-recursive:
|
2000-06-03 23:51:57 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \
|
|
|
|
(cd ../../$$dir && \
|
|
|
|
${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \
|
|
|
|
| ${AWK} ' \
|
|
|
|
/^[^#]/ { FoundSomething = 1 } \
|
|
|
|
/^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \
|
2002-03-04 20:41:03 +01:00
|
|
|
/^echo/ { gsub(/;[[:space:]]+/, "\n") } \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
{ block[line_c++] = $$0 } \
|
|
|
|
END { if (FoundSomething) \
|
|
|
|
for (line = 0; line < line_c; line++) \
|
|
|
|
print block[line] } \
|
|
|
|
') \
|
1998-02-20 22:31:20 +01:00
|
|
|
done
|
|
|
|
.endif # !target(fetch-list-recursive)
|
|
|
|
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.PHONY: fetch-list-one-pkg
|
2003-07-24 00:02:48 +02:00
|
|
|
.if !target(fetch-list-one-pkg)
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
|
1998-02-20 22:31:20 +01:00
|
|
|
fetch-list-one-pkg:
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
. if !empty(_ALLFILES)
|
|
|
|
@${ECHO}
|
|
|
|
@${ECHO} '#'
|
2003-01-15 21:55:38 +01:00
|
|
|
@location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...'
|
|
|
|
@${ECHO} '#'
|
|
|
|
@${MKDIR} ${_DISTDIR}
|
|
|
|
. for fetchfile in ${_ALLFILES}
|
2002-03-04 20:41:03 +01:00
|
|
|
. if defined(_FETCH_MESSAGE)
|
|
|
|
@(cd ${_DISTDIR}; \
|
|
|
|
if [ ! -f ${fetchfile:T} ]; then \
|
|
|
|
${ECHO}; \
|
|
|
|
filesize=`${AWK} ' \
|
|
|
|
/^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
|
|
|
|
' ${DISTINFO_FILE}` || true; \
|
|
|
|
${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \
|
|
|
|
${ECHO} '#'; \
|
|
|
|
${ECHO} ${_FETCH_MESSAGE:Q}; \
|
|
|
|
fi)
|
2002-03-10 18:15:29 +01:00
|
|
|
. elif defined(DYNAMIC_MASTER_SITES)
|
|
|
|
@(cd ${_DISTDIR}; \
|
|
|
|
if [ ! -f ${fetchfile:T} ]; then \
|
|
|
|
${ECHO}; \
|
|
|
|
filesize=`${AWK} ' \
|
|
|
|
/^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
|
|
|
|
' ${DISTINFO_FILE}` || true; \
|
|
|
|
${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
|
|
|
|
${ECHO} '#'; \
|
|
|
|
${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \
|
|
|
|
${CAT} ${FILESDIR}/getsite.sh; \
|
|
|
|
${ECHO} EOF; \
|
|
|
|
${ECHO} read unsorted_sites; \
|
|
|
|
${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \
|
|
|
|
${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
|
|
|
|
${ECHO} "${MKDIR} ${_DISTDIR}"; \
|
|
|
|
${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
|
|
|
|
${ECHO} 'for site in $$sites; do'; \
|
|
|
|
${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
|
|
|
|
${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \
|
|
|
|
${ECHO} done; \
|
|
|
|
${ECHO} ')'; \
|
|
|
|
fi)
|
2002-03-04 20:41:03 +01:00
|
|
|
. else
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
@(cd ${_DISTDIR}; \
|
2002-03-04 20:41:03 +01:00
|
|
|
if [ ! -f ${fetchfile:T} ]; then \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
${ECHO}; \
|
|
|
|
filesize=`${AWK} ' \
|
|
|
|
/^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
|
|
|
|
' ${DISTINFO_FILE}` || true; \
|
|
|
|
${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
|
|
|
|
${ECHO} '#'; \
|
2002-09-29 03:38:32 +02:00
|
|
|
${ECHO} 'unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
|
|
|
|
${ECHO} "${MKDIR} ${_DISTDIR}"; \
|
|
|
|
${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
|
|
|
|
${ECHO} 'for site in $$sites; do'; \
|
|
|
|
${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
|
|
|
|
${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \
|
|
|
|
${ECHO} done; \
|
|
|
|
fi)
|
2002-03-10 18:15:29 +01:00
|
|
|
. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES)
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
. endfor
|
|
|
|
. endif # !empty(_ALLFILES)
|
1998-02-20 22:31:20 +01:00
|
|
|
.endif # !target(fetch-list-one-pkg)
|
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)
|
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; \
|
2001-04-17 11:07:01 +02:00
|
|
|
${DIGEST} ${DIGEST_ALGORITHM} $$sumfile >> $$newfile; \
|
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; \
|
2001-04-17 11:07:01 +02:00
|
|
|
${ECHO} "${DIGEST_ALGORITHM} ($$ignore) = IGNORE" >> $$newfile; \
|
|
|
|
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
|
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 \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "$$" > $$newfile; \
|
|
|
|
${ECHO_N} "NetBSD" >> $$newfile; \
|
2001-06-09 14:56:21 +02:00
|
|
|
${ECHO} "$$" >> $$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 \
|
1999-10-14 07:31:22 +02:00
|
|
|
if [ "X$$sumfile" = "X" ]; then continue; fi; \
|
|
|
|
if [ "X$$sumfile" = "Xpatch-*" ]; then break; fi; \
|
1999-07-09 15:14:21 +02:00
|
|
|
case $$sumfile in \
|
1999-10-14 07:31:22 +02:00
|
|
|
patch-local-*) ;; \
|
2001-04-21 14:56:56 +02:00
|
|
|
*.orig|*.rej|*~) continue ;; \
|
2001-04-17 11:07:01 +02:00
|
|
|
*) ${ECHO} "${DIGEST_ALGORITHM} ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${DIGEST} ${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 \
|
|
|
|
(cd ${DISTDIR}; OK="true"; \
|
|
|
|
for file in "" ${_CKSUMFILES}; do \
|
|
|
|
if [ "X$$file" = X"" ]; then continue; fi; \
|
2001-06-09 14:15:59 +02:00
|
|
|
alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DISTINFO_FILE}`; \
|
2001-03-07 15:57:49 +01:00
|
|
|
if [ "X$$alg" = "X" ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> No checksum recorded for $$file."; \
|
1999-03-08 18:26:54 +01:00
|
|
|
OK="false"; \
|
|
|
|
else \
|
2001-03-07 15:57:49 +01:00
|
|
|
CKSUM=`${DIGEST} $$alg < $$file`; \
|
2001-06-09 14:15:59 +02:00
|
|
|
CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')"{print $$4;}' ${DISTINFO_FILE}`; \
|
2001-03-07 15:57:49 +01:00
|
|
|
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 OK for $$file."; \
|
|
|
|
else \
|
|
|
|
${ECHO_MSG} "=> Checksum mismatch for $$file."; \
|
|
|
|
OK="false"; \
|
|
|
|
fi; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
for file in "" ${_IGNOREFILES}; do \
|
|
|
|
if [ "X$$file" = X"" ]; then continue; fi; \
|
2001-06-09 14:15:59 +02:00
|
|
|
CKSUM2=`${AWK} 'NF == 4 && $$3 == "=" && $$2 == "('$$file')"{print $$4;}' ${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 \
|
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}
|
|
|
|
_BIN_INSTALL_FLAGS+= ${PKG_ARGS_ADD}
|
2001-05-20 03:58:19 +02:00
|
|
|
|
2000-07-06 18:45:21 +02:00
|
|
|
# Install binary pkg, without strict uptodate-check first
|
2003-10-18 14:29:26 +02:00
|
|
|
.PHONY: real-su-bin-install
|
|
|
|
real-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 \
|
2003-12-30 06:07:41 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
|
2001-05-20 03:58:19 +02:00
|
|
|
${ECHO_MSG} "*** If so, you may wish to \`\`pkg_delete $$found'' and install"; \
|
|
|
|
${ECHO_MSG} "*** this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \
|
|
|
|
${SHCOMMENT} ${ECHO_MSG} "*** or use \`\`${MAKE} bin-update'' to upgrade it and all of its dependencies."; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2000-07-06 18:45:21 +02:00
|
|
|
@if [ -f ${PKGFILE} ] ; then \
|
|
|
|
${ECHO_MSG} "Installing from binary pkg ${PKGFILE}" ; \
|
2003-09-02 08:59:37 +02:00
|
|
|
${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGFILE} ; \
|
2000-07-06 18:45:21 +02:00
|
|
|
else \
|
2002-05-03 14:44:01 +02:00
|
|
|
rel=`${UNAME} -r | ${SED} 's@\.\([0-9]*\)[\._].*@\.\1@'`; \
|
2002-02-14 00:02:14 +01:00
|
|
|
arch=${MACHINE_ARCH}; \
|
2002-11-10 19:20:44 +01:00
|
|
|
for site in ${BINPKG_SITES} ; do \
|
2001-06-12 14:49:55 +02:00
|
|
|
${ECHO} Trying `eval ${ECHO} $$site`/All ; \
|
2003-09-02 08:59:37 +02:00
|
|
|
${SHCOMMENT} ${ECHO} ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; \
|
2001-06-12 14:49:55 +02:00
|
|
|
if ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; then \
|
2002-05-03 14:44:01 +02:00
|
|
|
${ECHO} "${PKGNAME} successfully installed."; \
|
2001-05-20 03:58:19 +02:00
|
|
|
break ; \
|
|
|
|
fi ; \
|
|
|
|
done ; \
|
2002-09-16 12:04:39 +02:00
|
|
|
if ! ${PKG_INFO} -qe "${PKGNAME}" ; then \
|
2001-05-20 03:58:19 +02:00
|
|
|
${SHCOMMENT} Cycle through some FTP server here ;\
|
|
|
|
${ECHO_MSG} "Installing from source" ; \
|
2002-04-25 23:58:55 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} package \
|
2004-04-05 10:06:07 +02:00
|
|
|
DEPENDS_TARGET=${DEPENDS_TARGET:Q} && \
|
2001-05-20 03:58:19 +02:00
|
|
|
${MAKE} ${MAKEFLAGS} clean ; \
|
|
|
|
fi ; \
|
2000-07-06 18:45:21 +02:00
|
|
|
fi
|
|
|
|
|
2003-10-18 14:29:26 +02:00
|
|
|
.PHONY: bin-install
|
|
|
|
bin-install:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Binary install for ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-bin-install"; \
|
|
|
|
action="binary install"; \
|
|
|
|
${_SU_TARGET}
|
|
|
|
|
|
|
|
|
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
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Nobody should want to override this unless PKGNAME is simply bogus.
|
2002-11-12 14:42:50 +01:00
|
|
|
HTML_PKGNAME=<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</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")
|
2000-06-04 00:59:04 +02:00
|
|
|
@${ECHO} '<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A>'
|
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)
|
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Show (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
|
|
|
|
|
|
|
# Build a package but don't check the package cookie
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: repackage
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(repackage)
|
|
|
|
repackage: pre-repackage package
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: pre-repackage
|
1997-08-20 12:21:05 +02:00
|
|
|
pre-repackage:
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PACKAGE_COOKIE}
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
# Build a package but don't check the cookie for installation, also don't
|
|
|
|
# install package cookie
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: package-noinstall
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(package-noinstall)
|
|
|
|
package-noinstall:
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
################################################################
|
|
|
|
# Dependency checking
|
|
|
|
################################################################
|
|
|
|
|
2004-08-05 01:22:38 +02:00
|
|
|
.PHONY: install-depends pre-install-depends
|
|
|
|
pre-install-depends:
|
2000-08-07 01:39:23 +02:00
|
|
|
.if !target(install-depends)
|
2000-01-14 12:58:21 +01:00
|
|
|
# Tells whether to halt execution if the object formats differ
|
|
|
|
FATAL_OBJECT_FMT_SKEW?= yes
|
2000-01-17 15:49:55 +01:00
|
|
|
WARN_NO_OBJECT_FMT?= yes
|
2000-01-14 12:58:21 +01:00
|
|
|
|
2004-08-05 01:22:38 +02:00
|
|
|
install-depends: uptodate-pkgtools pre-install-depends
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(DEPENDS) || defined(BUILD_DEPENDS)
|
|
|
|
. if defined(NO_DEPENDS)
|
2001-03-27 05:19:43 +02:00
|
|
|
@${DO_NADA}
|
2001-07-19 00:43:32 +02:00
|
|
|
. else # !DEPENDS
|
|
|
|
. for dep in ${DEPENDS} ${BUILD_DEPENDS}
|
2001-03-27 05:19:43 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-06-03 16:17:49 +02:00
|
|
|
pkg="${dep:C/:.*//}"; \
|
|
|
|
dir="${dep:C/[^:]*://:C/:.*$//}"; \
|
2003-09-13 07:55:14 +02:00
|
|
|
found=`${PKG_BEST_EXISTS} "$$pkg" || ${TRUE}`; \
|
2001-09-10 22:03:17 +02:00
|
|
|
if [ "X$$REBUILD_DOWNLEVEL_DEPENDS" != "X" ]; then \
|
2002-05-03 14:44:01 +02:00
|
|
|
pkgname=`cd $$dir ; ${MAKE} ${MAKEFLAGS} show-var VARNAME=PKGNAME`; \
|
|
|
|
if [ "X$$found" != "X" -a "X$$found" != "X$${pkgname}" ]; then \
|
|
|
|
${ECHO_MSG} "ignoring old installed package \"$$found\""; \
|
2001-09-10 22:03:17 +02:00
|
|
|
found=""; \
|
|
|
|
fi; \
|
|
|
|
fi; \
|
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
|
|
|
if [ "$$found" != "" ]; then \
|
2003-09-13 07:55:14 +02:00
|
|
|
instobjfmt=`${PKG_INFO} -B "$$found" | ${AWK} -F'=[ \t]*' '/^OBJECT_FMT/ {print $$2; exit}'`; \
|
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
|
|
|
if [ "$$instobjfmt" = "" ]; then \
|
2000-01-17 15:49:55 +01:00
|
|
|
if [ "X${WARN_NO_OBJECT_FMT}" != "Xno" ]; then \
|
2003-09-13 07:55:14 +02:00
|
|
|
${ECHO} "WARNING: Unknown object format for installed package $$found - continuing"; \
|
2000-01-17 15:49:55 +01:00
|
|
|
fi; \
|
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
|
|
|
elif [ "$$instobjfmt" != "${OBJECT_FMT}" ]; then \
|
2003-09-13 07:55:14 +02:00
|
|
|
${ECHO} "Installed package $$found is an $$instobjfmt package."; \
|
2000-01-14 12:39:31 +01:00
|
|
|
${ECHO} "You are building an ${OBJECT_FMT} package, which will not inter-operate."; \
|
2003-09-13 07:55:14 +02:00
|
|
|
${ECHO} "Please update the $$found package to ${OBJECT_FMT}"; \
|
2000-08-07 12:23:38 +02:00
|
|
|
if [ "X${FATAL_OBJECT_FMT_SKEW}" != "Xno" ]; then \
|
2000-01-14 12:58:21 +01:00
|
|
|
exit 1; \
|
|
|
|
fi; \
|
2000-01-14 12:39:31 +01:00
|
|
|
fi; \
|
2003-09-13 13:32:04 +02:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Required installed package $$pkg: $${found} found"; \
|
1998-08-25 18:26:09 +02:00
|
|
|
else \
|
2000-11-16 06:36:01 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Required package $$pkg: NOT found"; \
|
2004-04-05 10:06:07 +02:00
|
|
|
target=${DEPENDS_TARGET:Q}; \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Verifying $$target for $$dir"; \
|
1998-08-25 18:26:09 +02:00
|
|
|
if [ ! -d $$dir ]; then \
|
2000-03-10 17:07:37 +01:00
|
|
|
${ECHO_MSG} "=> No directory for $$dir. Skipping.."; \
|
1998-04-22 16:22:39 +02:00
|
|
|
else \
|
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 $$dir ; \
|
2004-06-05 11:10:41 +02:00
|
|
|
${SETENV} _PKGSRC_DEPS=", ${PKGNAME}${_PKGSRC_DEPS}" ${MAKE} ${MAKEFLAGS} $$target PKGNAME_REQD=\'$$pkg\' || exit 1; \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Returning to build of ${PKGNAME}"; \
|
- 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
|
|
|
fi; \
|
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor # DEPENDS
|
|
|
|
. endif # !NO_DEPENDS
|
|
|
|
. endif # DEPENDS
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
.endif
|
|
|
|
|
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} "|"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ "${ONLY_FOR_ARCHS}" = "" ]; then \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "any"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "${ONLY_FOR_ARCHS}"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "|"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
if [ "${NOT_FOR_OPSYS}" = "" ]; then \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "any"; \
|
1999-03-08 18:26:54 +01:00
|
|
|
else \
|
2004-04-07 16:26:50 +02:00
|
|
|
${ECHO_N} "not ${NOT_FOR_OPSYS}"; \
|
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
|
|
|
|
.ifdef LICENSE
|
|
|
|
SED_LICENSE_EXPR= -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|'
|
|
|
|
.else
|
|
|
|
SED_LICENSE_EXPR= -e 's|%%LICENSE%%||'
|
|
|
|
.endif
|
|
|
|
|
1998-08-20 17:16:34 +02:00
|
|
|
# set up the "more info URL" information as a sed expression
|
|
|
|
.ifdef HOMEPAGE
|
1998-08-27 13:34:23 +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
|
|
|
|
SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%||'
|
|
|
|
.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} \
|
2003-09-03 17:05:43 +02: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) }' \
|
2003-09-03 17:05:43 +02: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 \
|
2003-01-04 23:20:47 +01:00
|
|
|
${_PKGSRCDIR}/packages) \
|
|
|
|
MULTIARCH=no; \
|
|
|
|
;; \
|
|
|
|
*) \
|
|
|
|
MULTIARCH=yes; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
cd ${.CURDIR} ; \
|
|
|
|
fi; \
|
|
|
|
${AWK} -f ../../mk/scripts/genreadme.awk \
|
|
|
|
builddependsfile=/dev/null \
|
|
|
|
dependsfile=/dev/null \
|
|
|
|
DISTDIR=${DISTDIR} \
|
|
|
|
MACHINE_ARCH=${MACHINE_ARCH} \
|
|
|
|
MULTIARCH=$$MULTIARCH \
|
|
|
|
OPSYS=${OPSYS} \
|
|
|
|
OS_VERSION=${OS_VERSION} \
|
|
|
|
PACKAGES=${PACKAGES} \
|
|
|
|
PKG_SUFX=${PKG_SUFX} \
|
|
|
|
PKG_URL=${PKG_URL} \
|
|
|
|
PKGREPOSITORYSUBDIR=${PKGREPOSITORYSUBDIR} \
|
|
|
|
PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||} \
|
2003-01-05 01:40:46 +01:00
|
|
|
TMPDIR=${TMPDIR:U/tmp} \
|
2003-01-04 23:20:47 +01:00
|
|
|
SINGLEPKG=${PKGPATH} \
|
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
|
|
|
|
|
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:
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(BUILD_DEPENDS) || defined(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:
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(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:
|
2003-03-30 07:06:49 +02:00
|
|
|
@${ECHO} "depends ${PKGPATH} ${DEPENDS}"
|
|
|
|
@${ECHO} "build_depends ${PKGPATH} ${BUILD_DEPENDS}"
|
|
|
|
@${ECHO} "conflicts ${PKGPATH} ${CONFLICTS}"
|
2002-11-11 22:46:51 +01:00
|
|
|
@${ECHO} "index ${PKGPATH} ${PKGNAME}"
|
|
|
|
@${ECHO} htmlname ${PKGPATH} ${HTML_PKGNAME:Q}
|
|
|
|
@${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q}
|
|
|
|
@${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q}
|
|
|
|
@${ECHO} comment ${PKGPATH} ${COMMENT:Q}
|
|
|
|
@${ECHO} license ${PKGPATH} ${LICENSE:Q}
|
2003-07-23 11:41:23 +02:00
|
|
|
@if [ "${ONLY_FOR_ARCHS}" = "" ]; then \
|
|
|
|
${ECHO} "onlyfor ${PKGPATH} any"; \
|
|
|
|
else \
|
|
|
|
${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_ARCHS}"; \
|
|
|
|
fi;
|
2003-09-15 12:27:12 +02:00
|
|
|
@if [ "${NOT_FOR_OPSYS}" = "" ]; then \
|
2003-07-23 11:41:23 +02:00
|
|
|
${ECHO} "notfor ${PKGPATH} any"; \
|
|
|
|
else \
|
|
|
|
${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_OPSYS}"; \
|
|
|
|
fi;
|
|
|
|
@${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}"
|
|
|
|
@${ECHO} "categories ${PKGPATH} ${CATEGORIES}"
|
2003-07-25 00:27:16 +02: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
|
|
|
|
|
2001-01-05 18:37:12 +01:00
|
|
|
.if !target(show-license)
|
|
|
|
show-license show-licence:
|
|
|
|
@if [ "${LICENSE}" != "" ]; then \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${_PKGSRCDIR}/licenses/${LICENSE}; then \
|
2004-01-28 21:29:46 +01:00
|
|
|
if [ "${PAGER}" != "" ]; then \
|
|
|
|
${PAGER} ${_PKGSRCDIR}/licenses/${LICENSE};\
|
|
|
|
else \
|
|
|
|
${CAT} ${_PKGSRCDIR}/licenses/${LICENSE};\
|
|
|
|
fi \
|
2001-03-20 13:39:00 +01:00
|
|
|
else \
|
|
|
|
${ECHO} "Generic ${LICENSE} information not available"; \
|
|
|
|
${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \
|
|
|
|
fi \
|
2001-01-05 18:37:12 +01:00
|
|
|
fi
|
|
|
|
.endif
|
1999-11-29 20:48:15 +01:00
|
|
|
|
2003-03-30 07:06:49 +02:00
|
|
|
# Stat all the files of one pkg and sum the sizes up.
|
|
|
|
#
|
1999-11-29 20:48:15 +01:00
|
|
|
# XXX This is intended to be run before pkg_create is called, so the
|
2000-09-19 21:29:11 +02:00
|
|
|
# existence of ${PLIST} can be assumed.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-pkg-size-this
|
2000-06-25 05:58:17 +02:00
|
|
|
print-pkg-size-this:
|
2000-06-25 08:31:12 +02:00
|
|
|
@${SHCOMMENT} "This pkg's files" ; \
|
2000-04-15 18:13:07 +02:00
|
|
|
${AWK} 'BEGIN { base = "${PREFIX}/" } \
|
|
|
|
/^@cwd/ { base = $$2 "/" } \
|
2003-12-25 17:18:48 +01:00
|
|
|
/^@/ { next } \
|
|
|
|
{ print base $$0 }' \
|
2000-06-27 22:14:45 +02:00
|
|
|
<${PLIST} \
|
2001-06-12 15:17:01 +02:00
|
|
|
| ${SORT} -u \
|
2003-12-25 17:18:48 +01:00
|
|
|
| ${SED} -e "s/'/'\\\\''/g" -e "s/.*/'&'/" \
|
2004-02-09 06:42:57 +01:00
|
|
|
| ${XARGS} -n 256 ${LS} -ld \
|
2000-09-19 21:29:11 +02:00
|
|
|
| ${AWK} 'BEGIN { print("0 "); } \
|
|
|
|
{ print($$5, " + "); } \
|
2000-09-15 10:35:15 +02:00
|
|
|
END { print("p"); }' \
|
|
|
|
| ${DC}
|
1999-11-29 20:48:15 +01:00
|
|
|
|
2000-06-25 05:58:17 +02:00
|
|
|
# Sizes of required pkgs (only)
|
2003-03-30 07:06:49 +02:00
|
|
|
#
|
2000-06-25 05:58:17 +02:00
|
|
|
# XXX This is intended to be run before pkg_create is called, so the
|
2003-03-30 07:06:49 +02:00
|
|
|
# dependencies are all installed.
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-pkg-size-depends
|
2000-06-25 05:58:17 +02:00
|
|
|
print-pkg-size-depends:
|
2004-08-04 08:22:39 +02:00
|
|
|
@pkglist=`${MAKE} ${MAKEFLAGS} run-depends-list`; \
|
|
|
|
if [ "X$${pkglist}" != "X" ]; then \
|
|
|
|
${ECHO} $${pkglist} \
|
|
|
|
| ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} \
|
|
|
|
| ${SORT} -u \
|
|
|
|
| ${XARGS} -n 256 ${SETENV} ${PKG_INFO} -qs \
|
|
|
|
| ${AWK} -- 'BEGIN { print("0 "); } \
|
|
|
|
/^[0-9]+$$/ { print($$1, " + "); } \
|
|
|
|
END { print("p"); }' \
|
|
|
|
| ${DC}; \
|
|
|
|
else \
|
|
|
|
${ECHO} "0"; \
|
|
|
|
fi
|
2000-01-10 20:17:27 +01:00
|
|
|
|
1999-11-29 20:48:15 +01:00
|
|
|
|
2000-06-16 11:18:26 +02:00
|
|
|
###
|
|
|
|
### Automatic PLIST generation
|
|
|
|
### - files & symlinks first
|
|
|
|
### - @dirrm statements last
|
|
|
|
### - empty directories are handled properly
|
|
|
|
### - dirs from mtree files are excluded
|
2003-12-13 23:15:11 +01:00
|
|
|
### - substitute for platform or package specifics substrings
|
2000-06-16 11:18:26 +02:00
|
|
|
###
|
|
|
|
### Usage:
|
|
|
|
### - make install
|
2001-11-28 11:21:46 +01:00
|
|
|
### - make print-PLIST | brain >PLIST
|
2000-06-16 11:18:26 +02:00
|
|
|
###
|
|
|
|
|
2003-12-26 18:43:24 +01:00
|
|
|
_PRINT_PLIST_AWK_SUBST={ \
|
|
|
|
gsub(/${OPSYS}/, "$${OPSYS}"); \
|
|
|
|
gsub(/${OS_VERSION:S/./\./g}/, "$${OS_VERSION}"); \
|
|
|
|
gsub(/${MACHINE_GNU_PLATFORM}/, "$${MACHINE_GNU_PLATFORM}"); \
|
|
|
|
gsub(/${MACHINE_ARCH}/, "$${MACHINE_ARCH}"); \
|
|
|
|
gsub(/${MACHINE_GNU_ARCH}/, "$${MACHINE_GNU_ARCH}");
|
|
|
|
.if !empty(LOWER_VENDOR)
|
|
|
|
_PRINT_PLIST_AWK_SUBST+= gsub(/${LOWER_VENDOR}/, "$${LOWER_VENDOR}");
|
|
|
|
.endif
|
|
|
|
_PRINT_PLIST_AWK_SUBST+= \
|
|
|
|
gsub(/${LOWER_OS_VERSION:S/./\./g}/, "$${LOWER_OS_VERSION}"); \
|
|
|
|
gsub(/${LOWER_OPSYS}/, "$${LOWER_OPSYS}"); \
|
|
|
|
gsub(/${PKGNAME_NOREV}/, "$${PKGNAME}"); \
|
|
|
|
gsub(/${PKGVERSION:S/./\./g:C/nb[0-9]*$$//}/, "$${PKGVERSION}");\
|
|
|
|
gsub(/${PKGLOCALEDIR}\/locale/, "$${PKGLOCALEDIR}/locale"); \
|
|
|
|
}
|
|
|
|
|
|
|
|
_PRINT_PLIST_AWK_IGNORE= ($$0 ~ /emul\/linux\/proc/)
|
|
|
|
_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^info\/dir$$/)
|
|
|
|
.if defined(INFO_DIR) && empty(INFO_DIR:Minfo)
|
|
|
|
_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/dir$$/)
|
|
|
|
.endif
|
2004-01-02 13:28:05 +01:00
|
|
|
.if !empty(INFO_FILES)
|
|
|
|
. for _f_ in ${INFO_FILES}
|
2004-02-16 14:21:34 +01:00
|
|
|
_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/${_f_:S|+|\+|g}(-[0-9]+)?(\.gz)?$$/)
|
2004-01-02 13:28:05 +01:00
|
|
|
. endfor
|
|
|
|
.endif
|
2002-08-03 02:15:30 +02:00
|
|
|
|
2003-12-13 23:15:11 +01:00
|
|
|
# Common (system) directories not to generate @dirrm statements for
|
2003-12-26 18:43:24 +01:00
|
|
|
# Reads MTREE_FILE and generate awk statements that will
|
2003-12-13 23:15:11 +01:00
|
|
|
# sort out which directories NOT to include into the PLIST @dirrm list
|
2000-06-16 11:18:26 +02:00
|
|
|
.if make(print-PLIST)
|
2003-12-26 18:43:24 +01:00
|
|
|
_PRINT_PLIST_COMMON_DIRS!= ${AWK} 'BEGIN { \
|
2002-05-03 14:44:01 +02:00
|
|
|
i=0; \
|
|
|
|
stack[i]="${PREFIX}" ; \
|
|
|
|
cwd=""; \
|
|
|
|
} \
|
|
|
|
! ( /^\// || /^\#/ || /^$$/ ) { \
|
|
|
|
if ( $$1 == ".." ){ \
|
|
|
|
i=i-1; \
|
|
|
|
cwd = stack[i]; \
|
|
|
|
} else if ( $$1 == "." ){ \
|
|
|
|
} else { \
|
|
|
|
stack[i] = cwd ; \
|
|
|
|
if ( i == 0 ){ \
|
|
|
|
cwd = $$1 ; \
|
|
|
|
} else { \
|
2003-08-12 17:51:29 +02:00
|
|
|
cwd = cwd "\\/" $$1 ; \
|
2002-05-03 14:44:01 +02:00
|
|
|
} \
|
2003-08-12 17:51:29 +02:00
|
|
|
print "/^" cwd "$$$$/ { next; }"; \
|
2002-05-03 14:44:01 +02:00
|
|
|
i=i+1 ; \
|
|
|
|
} \
|
|
|
|
} \
|
2003-08-12 17:51:29 +02:00
|
|
|
END { print "{ print $$$$0; }"; } \
|
2000-06-16 11:18:26 +02:00
|
|
|
' <${MTREE_FILE}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
|
|
|
|
# scan $PREFIX for any files/dirs modified since the package was extracted
|
|
|
|
# will emit "@exec mkdir"-statements for empty directories
|
|
|
|
# XXX will fail for data files that were copied using tar (e.g. emacs)!
|
|
|
|
# XXX should check $LOCALBASE and $X11BASE, and add @cwd statements
|
|
|
|
|
2004-09-10 21:51:50 +02:00
|
|
|
_PRINT_PLIST_FILES_CMD= \
|
|
|
|
${FIND} ${PREFIX}/. -xdev -newer ${EXTRACT_COOKIE} \! -type d -print
|
|
|
|
_PRINT_PLIST_DIRS_CMD= \
|
|
|
|
${FIND} ${PREFIX}/. -xdev -newer ${EXTRACT_COOKIE} -type d -print
|
|
|
|
_PRINT_LA_LIBNAMES= ${.CURDIR}/../../mk/scripts/print-la-libnames
|
|
|
|
|
|
|
|
.if !empty(LIBTOOLIZE_PLIST:M[yY][eE][sS])
|
|
|
|
_PRINT_PLIST_LIBTOOLIZE_FILTER?= \
|
|
|
|
( \
|
|
|
|
if ${TEST} -d ${WRKDIR}; then \
|
|
|
|
tmpdir="${WRKDIR}"; \
|
|
|
|
else \
|
|
|
|
tmpdir="$${TMPDIR-/tmp}"; \
|
|
|
|
fi; \
|
|
|
|
fileslist="$$tmpdir/print.plist.files.$$$$"; \
|
|
|
|
libslist="$$tmpdir/print.plist.libs.$$$$"; \
|
|
|
|
while read file; do \
|
|
|
|
case $$file in \
|
|
|
|
*.la) \
|
|
|
|
${SH} ${_PRINT_LA_LIBNAMES} $$file >> $$libslist; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
${ECHO} "$$file"; \
|
|
|
|
done > $$fileslist; \
|
2004-09-24 17:00:10 +02:00
|
|
|
if ${TEST} -f "$$libslist"; then \
|
|
|
|
${GREP} -hvxF "`${SORT} -u $$libslist`" "$$fileslist"; \
|
|
|
|
else \
|
|
|
|
${CAT} "$$fileslist"; \
|
|
|
|
fi; \
|
2004-09-10 21:51:50 +02:00
|
|
|
${RM} -f "$$fileslist" "$$libslist"; \
|
|
|
|
)
|
|
|
|
.else
|
|
|
|
_PRINT_PLIST_LIBTOOLIZE_FILTER?= ${CAT}
|
|
|
|
.endif
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: print-PLIST
|
2000-06-16 11:18:26 +02:00
|
|
|
.if !target(print-PLIST)
|
|
|
|
print-PLIST:
|
2001-09-11 18:41:36 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}\
|
|
|
|
${ECHO} '@comment $$'NetBSD'$$'
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}\
|
2004-01-10 10:52:56 +01:00
|
|
|
shlib_type=`${MAKE} ${MAKEFLAGS} show-shlib-type`; \
|
|
|
|
case $$shlib_type in \
|
2001-01-04 16:10:17 +01:00
|
|
|
"a.out") genlinks=1 ;; \
|
|
|
|
*) genlinks=0 ;; \
|
|
|
|
esac; \
|
2004-09-10 21:51:50 +02:00
|
|
|
${_PRINT_PLIST_FILES_CMD} \
|
|
|
|
| ${_PRINT_PLIST_LIBTOOLIZE_FILTER} \
|
2002-04-10 14:03:10 +02:00
|
|
|
| ${SORT} \
|
2000-07-04 13:58:49 +02:00
|
|
|
| ${AWK} ' \
|
2003-12-26 18:43:24 +01:00
|
|
|
{ sub("${PREFIX}/\\./", ""); } \
|
|
|
|
${_PRINT_PLIST_AWK_IGNORE} { next; } \
|
|
|
|
${_PRINT_PLIST_AWK_SUBST} \
|
2001-01-04 16:10:17 +01:00
|
|
|
/^@/ { print $$0; next } \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
print $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2001-01-04 16:10:17 +01:00
|
|
|
if ('$$genlinks') print $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2001-01-04 16:10:17 +01:00
|
|
|
if ('$$genlinks') print $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2001-01-04 16:10:17 +01:00
|
|
|
if ('$$genlinks') print $$0; \
|
|
|
|
next; \
|
|
|
|
} \
|
|
|
|
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \
|
|
|
|
print $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2001-01-04 16:10:17 +01:00
|
|
|
if ('$$genlinks') print $$0; \
|
2003-12-13 01:34:39 +01:00
|
|
|
sub("\\.[0-9]+$$", ""); \
|
2001-01-04 16:10:17 +01:00
|
|
|
if ('$$genlinks') print $$0; \
|
|
|
|
next; \
|
|
|
|
} \
|
2004-04-12 22:48:07 +02:00
|
|
|
${PRINT_PLIST_AWK} \
|
2003-12-26 18:43:24 +01:00
|
|
|
{ print $$0; }'
|
2001-09-11 18:41:36 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}\
|
2004-09-10 21:51:50 +02:00
|
|
|
for i in `${_PRINT_PLIST_DIRS_CMD} \
|
2003-12-26 18:43:24 +01:00
|
|
|
| ${SORT} -r \
|
|
|
|
| ${AWK} ' \
|
|
|
|
/emul\/linux\/proc/ { next; } \
|
|
|
|
/${PREFIX:S|/|\\/|g}\/\.$$/ { next; } \
|
|
|
|
{ sub("${PREFIX}/\\\\./", ""); } \
|
|
|
|
${_PRINT_PLIST_COMMON_DIRS}'` ; \
|
2000-07-04 13:58:49 +02:00
|
|
|
do \
|
2001-06-12 15:17:01 +02:00
|
|
|
if [ `${LS} -la ${PREFIX}/$$i | ${WC} -l` = 3 ]; then \
|
2002-02-05 23:39:00 +01:00
|
|
|
${ECHO} @exec \$${MKDIR} %D/$$i ; \
|
2000-07-04 13:58:49 +02:00
|
|
|
fi ; \
|
2004-04-12 22:48:07 +02:00
|
|
|
${ECHO} @dirrm $$i | ${AWK} ' \
|
|
|
|
${PRINT_PLIST_AWK} \
|
|
|
|
{ print $$0; }' ; \
|
2000-07-04 13:58:49 +02:00
|
|
|
done \
|
2003-12-26 18:43:24 +01:00
|
|
|
| ${AWK} '${_PRINT_PLIST_AWK_SUBST} { print $$0; }'
|
2000-06-16 11:18:26 +02:00
|
|
|
.endif # target(print-PLIST)
|
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
# By default, all packages attempt to link into the views.
|
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
BUILD_VIEWS?= yes
|
|
|
|
.endif
|
|
|
|
|
2003-09-12 12:54:49 +02:00
|
|
|
# DEFAULT_VIEW.${PKGBASE} default view for ${PKGBASE}
|
|
|
|
# VIEWBASE base location of files at run-time
|
|
|
|
#
|
|
|
|
DEFAULT_VIEW.${PKGBASE}?= ${DEFAULT_VIEW}
|
|
|
|
.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
|
|
|
|
. if empty(DEFAULT_VIEW.${PKGBASE}:M"")
|
|
|
|
VIEWBASE= ${LOCALBASE}/${DEFAULT_VIEW.${PKGBASE}}
|
|
|
|
. else
|
|
|
|
VIEWBASE= ${LOCALBASE}
|
|
|
|
. endif
|
|
|
|
.elif ${PKG_INSTALLATION_TYPE} == "overwrite"
|
|
|
|
VIEWBASE= ${PREFIX}
|
|
|
|
.endif
|
2003-11-23 08:31:18 +01:00
|
|
|
MAKE_ENV+= VIEWBASE=${VIEWBASE}
|
2003-09-12 12:54:49 +02:00
|
|
|
|
|
|
|
PKGVIEWS+= ${DEFAULT_VIEW.${PKGBASE}}
|
2000-06-16 11:18:26 +02:00
|
|
|
|
1997-08-20 12:21:05 +02:00
|
|
|
# Fake installation of package so that user can pkg_delete it later.
|
1999-08-10 12:48:23 +02:00
|
|
|
# Also, make sure that an installed package is recognized correctly in
|
2003-09-02 08:59:37 +02:00
|
|
|
# accordance to the @pkgdep directive in the packing lists.
|
1997-08-20 12:21:05 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: fake-pkg
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(fake-pkg)
|
2001-01-29 12:34:21 +01:00
|
|
|
fake-pkg: ${PLIST} ${DESCR} ${MESSAGE}
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if [ ! -f ${PLIST} -o ! -f ${DESCR} ]; then \
|
1998-10-26 18:40:57 +01:00
|
|
|
${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2002-05-03 14:44:01 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-02 08:59:37 +02:00
|
|
|
if [ ! -d ${_PKG_DBDIR} ]; then \
|
|
|
|
${RM} -f ${_PKG_DBDIR}; \
|
|
|
|
${MKDIR} ${_PKG_DBDIR}; \
|
1998-10-26 18:40:57 +01:00
|
|
|
fi
|
2001-07-19 00:43:32 +02:00
|
|
|
. if defined(FORCE_PKG_REGISTER)
|
2003-09-16 13:45:42 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} delete ${PKGNAME}
|
2003-09-02 08:59:37 +02:00
|
|
|
. if ${PKG_INSTALLATION_TYPE} == "overwrite"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${_PKG_DBDIR}/${PKGNAME}
|
|
|
|
. endif
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
1999-03-08 18:26:54 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_VERSION_FILE} ${BUILD_INFO_FILE}
|
1999-11-29 20:48:15 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE}
|
2003-01-10 12:57:09 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PRESERVE_FILE}
|
|
|
|
. if defined(PKG_PRESERVE)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DATE} > ${PRESERVE_FILE}
|
|
|
|
. endif
|
2002-02-28 12:08:55 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
files=""; \
|
2002-03-15 08:16:23 +01:00
|
|
|
for f in ${.CURDIR}/Makefile ${FILESDIR}/* ${PKGDIR}/*; do \
|
2002-03-12 16:40:24 +01:00
|
|
|
if [ -f "$$f" ]; then \
|
|
|
|
files="$$files \"$$f\""; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
2001-06-09 14:15:59 +02:00
|
|
|
if [ -f ${DISTINFO_FILE} ]; then \
|
|
|
|
for f in `${AWK} 'NF == 4 && $$3 == "=" { gsub("[()]", "", $$2); print $$2 }' < ${DISTINFO_FILE}`; do \
|
2001-02-15 14:49:04 +01:00
|
|
|
if [ -f ${PATCHDIR}/$$f ]; then \
|
2002-03-12 16:40:24 +01:00
|
|
|
files="$$files \"${PATCHDIR}/$$f\""; \
|
1999-09-03 23:05:58 +02:00
|
|
|
fi; \
|
1999-08-18 12:02:01 +02:00
|
|
|
done; \
|
|
|
|
fi; \
|
1998-10-26 18:40:57 +01:00
|
|
|
if [ -d ${PATCHDIR} ]; then \
|
|
|
|
for f in ${PATCHDIR}/patch-*; do \
|
|
|
|
case $$f in \
|
|
|
|
*.orig|*.rej|*~) ;; \
|
1999-08-18 12:02:01 +02:00
|
|
|
${PATCHDIR}/patch-local-*) \
|
2002-03-12 16:40:24 +01:00
|
|
|
files="$$files \"$$f\"" ;; \
|
1998-10-26 18:40:57 +01:00
|
|
|
esac; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
2002-03-12 16:40:24 +01:00
|
|
|
eval ${GREP} '\$$NetBSD' $$files | ${SED} -e 's|^${_PKGSRCDIR}/||' > ${BUILD_VERSION_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. for def in ${BUILD_DEFS}
|
2003-06-10 07:21:42 +02:00
|
|
|
@${ECHO} ${def}=${${def}:Q} | ${SED} -e 's|^PATH=[^ ]*|PATH=...|' >> ${BUILD_INFO_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endfor
|
2004-02-10 23:33:47 +01:00
|
|
|
. if !empty(USE_LANGUAGES)
|
2003-10-11 05:43:14 +02:00
|
|
|
@${ECHO} "CC_VERSION=${CC_VERSION}" >> ${BUILD_INFO_FILE}
|
2004-02-10 23:33:47 +01:00
|
|
|
. endif
|
2002-07-24 21:42:21 +02:00
|
|
|
. if defined(USE_PERL5) && (${USE_PERL5} == "run")
|
2003-06-10 07:21:42 +02:00
|
|
|
@${ECHO} "PERL=`${PERL5} --version 2>/dev/null | ${GREP} 'This is perl'`" >> ${BUILD_INFO_FILE}
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2003-08-26 22:15:23 +02:00
|
|
|
. ifdef _USE_GMAKE
|
2003-06-10 07:21:42 +02:00
|
|
|
@${ECHO} "GMAKE=`${GMAKE} --version | ${GREP} Make`" >> ${BUILD_INFO_FILE}
|
2003-07-22 12:12:47 +02:00
|
|
|
. endif
|
|
|
|
. if ${CHECK_SHLIBS} == "YES"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-08-23 11:11:19 +02:00
|
|
|
case "${LDD}" in \
|
|
|
|
"") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;; \
|
|
|
|
*) ldd="${LDD}"; \
|
|
|
|
esac; \
|
2003-07-22 12:12:47 +02:00
|
|
|
case "${OBJECT_FMT}" in \
|
|
|
|
ELF) bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
|
|
|
|
libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.so\.[0-9]+$$/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
|
|
|
|
if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \
|
2003-07-22 15:48:48 +02:00
|
|
|
requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} 'NF == 3 { print $$3 }' | ${SORT} -u`; \
|
2003-07-22 12:12:47 +02:00
|
|
|
fi; \
|
2003-08-23 11:11:19 +02:00
|
|
|
;; \
|
|
|
|
Mach-O) bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
|
|
|
|
libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.dylib/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
|
|
|
|
if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \
|
2004-01-05 08:15:39 +01:00
|
|
|
requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \
|
2003-08-23 11:11:19 +02:00
|
|
|
fi; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
for i in "" $$libs; do \
|
|
|
|
${TEST} "$$i" = "" && continue; \
|
|
|
|
${ECHO} "PROVIDES=$$i" >> ${BUILD_INFO_FILE}; \
|
|
|
|
done; \
|
|
|
|
for req in "" $$requires; do \
|
|
|
|
${TEST} "$$req" = "" && continue; \
|
|
|
|
${ECHO} "REQUIRES=$$req" >> ${BUILD_INFO_FILE}; \
|
|
|
|
done
|
2001-07-19 00:43:32 +02:00
|
|
|
. endif
|
2000-11-22 11:40:21 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-08-01 04:16:58 +02:00
|
|
|
${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE}
|
2000-11-22 11:40:21 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2000-06-25 05:58:17 +02:00
|
|
|
size_this=`${MAKE} ${MAKEFLAGS} print-pkg-size-this`; \
|
|
|
|
size_depends=`${MAKE} ${MAKEFLAGS} print-pkg-size-depends`; \
|
2000-06-27 22:14:45 +02:00
|
|
|
${ECHO} $$size_this >${SIZE_PKG_FILE}; \
|
2000-09-15 11:18:21 +02:00
|
|
|
${ECHO} $$size_this $$size_depends + p | ${DC} >${SIZE_ALL_FILE}
|
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
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-09-02 08:59:37 +02:00
|
|
|
doit=yes; \
|
|
|
|
case ${PKG_INSTALLATION_TYPE} in \
|
|
|
|
overwrite) if [ -d ${_PKG_DBDIR}/${PKGNAME} ]; then \
|
|
|
|
doit=no; \
|
|
|
|
fi ;; \
|
|
|
|
esac; \
|
|
|
|
case $$doit in \
|
|
|
|
yes) \
|
2000-03-13 15:19:15 +01:00
|
|
|
${ECHO_MSG} "${_PKGSRC_IN}> Registering installation for ${PKGNAME}"; \
|
2003-09-02 08:59:37 +02:00
|
|
|
${MKDIR} ${_PKG_DBDIR}/${PKGNAME}; \
|
|
|
|
${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${_PKG_DBDIR}/${PKGNAME}/+CONTENTS; \
|
|
|
|
${CP} ${DESCR} ${_PKG_DBDIR}/${PKGNAME}/+DESC; \
|
|
|
|
${ECHO} ${COMMENT:Q} > ${_PKG_DBDIR}/${PKGNAME}/+COMMENT; \
|
|
|
|
${CP} ${BUILD_VERSION_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_VERSION; \
|
|
|
|
${CP} ${BUILD_INFO_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_INFO; \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${SIZE_PKG_FILE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${SIZE_PKG_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_PKG; \
|
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
|
|
|
fi ; \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${SIZE_ALL_FILE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${SIZE_ALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_ALL; \
|
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
|
|
|
fi ; \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${PRESERVE_FILE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${PRESERVE_FILE} ${_PKG_DBDIR}/${PKGNAME}/+PRESERVE; \
|
2003-01-10 12:57:09 +01:00
|
|
|
fi ; \
|
2003-09-02 08:59:37 +02:00
|
|
|
if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" ]; then \
|
|
|
|
${TOUCH} ${_PKG_DBDIR}/${PKGNAME}/+VIEWS; \
|
|
|
|
fi ; \
|
1998-09-21 14:22:47 +02:00
|
|
|
if [ -n "${INSTALL_FILE}" ]; then \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${INSTALL_FILE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${INSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+INSTALL; \
|
1998-09-21 14:22:47 +02:00
|
|
|
fi; \
|
|
|
|
fi; \
|
|
|
|
if [ -n "${DEINSTALL_FILE}" ]; then \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${DEINSTALL_FILE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${DEINSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \
|
1998-09-21 14:22:47 +02:00
|
|
|
fi; \
|
|
|
|
fi; \
|
2001-06-12 15:17:01 +02:00
|
|
|
if [ -n "${MESSAGE}" ]; then \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} -f ${MESSAGE}; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${CP} ${MESSAGE} ${_PKG_DBDIR}/${PKGNAME}/+DISPLAY; \
|
1998-09-21 14:22:47 +02:00
|
|
|
fi; \
|
|
|
|
fi; \
|
2004-04-02 21:09:18 +02:00
|
|
|
list="`${MAKE} ${MAKEFLAGS} run-depends-list ECHO_MSG=${TRUE} | ${SORT} -u`" ; \
|
2003-09-13 13:23:35 +02:00
|
|
|
for realdep in `${ECHO} $$list | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} | ${SORT} -u`; do \
|
2000-01-05 17:55:32 +01:00
|
|
|
if ${TEST} -z "$$realdep"; then \
|
2000-09-10 14:11:25 +02:00
|
|
|
${ECHO} "$$dep not installed - dependency NOT registered" ; \
|
2003-09-02 08:59:37 +02:00
|
|
|
elif [ -d ${_PKG_DBDIR}/$$realdep ]; then \
|
2004-07-03 23:59:04 +02:00
|
|
|
if ${TEST} ! -f ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; then \
|
2003-09-02 08:59:37 +02:00
|
|
|
${TOUCH} ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
|
1999-03-08 18:26:54 +01:00
|
|
|
fi; \
|
|
|
|
${AWK} 'BEGIN { found = 0; } \
|
|
|
|
$$0 == "${PKGNAME}" { found = 1; } \
|
|
|
|
{ print $$0; } \
|
|
|
|
END { if (!found) { printf("%s\n", "${PKGNAME}"); }}' \
|
2003-09-02 08:59:37 +02:00
|
|
|
< ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY > ${_PKG_DBDIR}/$$realdep/reqby.$$$$; \
|
|
|
|
${MV} ${_PKG_DBDIR}/$$realdep/reqby.$$$$ ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
|
1999-03-08 18:26:54 +01:00
|
|
|
${ECHO} "${PKGNAME} requires installed package $$realdep"; \
|
1998-10-12 21:40:33 +02:00
|
|
|
fi; \
|
2003-09-02 08:59:37 +02:00
|
|
|
done ;; \
|
|
|
|
esac
|
2003-09-08 03:13:02 +02:00
|
|
|
. if (${PKG_INSTALLATION_TYPE} == "pkgviews") && \
|
|
|
|
!empty(BUILD_VIEWS:M[yY][eE][sS])
|
2003-09-02 08:59:37 +02:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} build-views
|
|
|
|
. endif # pkgviews
|
|
|
|
.endif # !fake-pkg
|
|
|
|
|
|
|
|
.PHONY: build-views
|
|
|
|
build-views: do-su-build-views
|
|
|
|
|
|
|
|
.PHONY: do-su-build-views
|
|
|
|
do-su-build-views:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Building views for ${PKGNAME}"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-build-views"; \
|
|
|
|
action="build-views"; \
|
|
|
|
${_SU_TARGET}
|
|
|
|
|
|
|
|
.PHONY: real-su-build-views
|
|
|
|
.if !target(real-su-build-views)
|
|
|
|
real-su-build-views:
|
|
|
|
. if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
${MKDIR} ${LOCALBASE}; \
|
|
|
|
for v in ${PKGVIEWS}; do \
|
|
|
|
case "$$v" in \
|
|
|
|
"") dbdir=${PKG_DBDIR}; viewname=standard ;; \
|
|
|
|
*) dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;; \
|
|
|
|
esac; \
|
|
|
|
${ECHO} "=> Performing package view clash check for ${PKGNAME} in $$viewname view"; \
|
|
|
|
pkg=`${PKG_INFO_CMD} -K $$dbdir -e ${PKGBASE} || ${TRUE}`; \
|
|
|
|
case "$$pkg" in \
|
|
|
|
"") ;; \
|
|
|
|
*) ${ECHO} "*** ${PKGBASE} exists in $$viewname view - package $$pkg ***"; \
|
|
|
|
${ECHO} "*** Not hoisting ${PKGNAME} into $$viewname view"; \
|
|
|
|
continue ;; \
|
|
|
|
esac; \
|
|
|
|
${ECHO} "=> Performing package view overwrite check for ${PKGNAME} in $$viewname view"; \
|
|
|
|
dups=`${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v check ${PKGNAME} || ${TRUE}`; \
|
|
|
|
case "$$dups" in \
|
|
|
|
"") ;; \
|
|
|
|
*) ${ECHO} "***********************************************************"; \
|
|
|
|
${ECHO} "**** The following symbolic links will be overwritten *****"; \
|
|
|
|
for f in $$dups; do \
|
|
|
|
${LS} -l ${LOCALBASE}/$$v/$$f; \
|
|
|
|
done; \
|
|
|
|
${ECHO} "***********************************************************"; \
|
|
|
|
;; \
|
|
|
|
esac; \
|
|
|
|
${ECHO} "=> Linking package into $$viewname view"; \
|
|
|
|
${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v add ${PKGNAME}; \
|
|
|
|
done
|
|
|
|
. else
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.PHONY: remove-views
|
|
|
|
remove-views: do-su-remove-views
|
|
|
|
|
|
|
|
.PHONY: do-su-remove-views
|
|
|
|
do-su-remove-views:
|
|
|
|
@${ECHO_MSG} "${_PKGSRC_IN}> Removing ${PKGNAME} from views"
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
realtarget="real-su-remove-views"; \
|
|
|
|
action="remove-views"; \
|
|
|
|
${_SU_TARGET}
|
|
|
|
|
|
|
|
.PHONY: real-su-remove-views
|
|
|
|
.if !target(real-su-remove-views)
|
|
|
|
real-su-remove-views:
|
|
|
|
. if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
for v in ${PKGVIEWS}; do \
|
|
|
|
case "$$v" in \
|
|
|
|
"") dbdir=${PKG_DBDIR}; viewname=standard ;; \
|
|
|
|
*) dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;; \
|
|
|
|
esac; \
|
|
|
|
${ECHO} "=> Removing package from $$viewname view"; \
|
|
|
|
${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v delete ${PKGNAME}; \
|
|
|
|
done
|
|
|
|
.else
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
|
|
|
|
. endif
|
1997-08-20 12:21:05 +02:00
|
|
|
.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
|
|
|
|
1999-07-02 10:37:20 +02:00
|
|
|
# if automatic manual page compression is done by the package according
|
|
|
|
# to MANZ's value, set MANCOMPRESSED if MANZ is set
|
1999-06-28 13:42:28 +02:00
|
|
|
.if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ)
|
|
|
|
MANCOMPRESSED= yes
|
2001-03-26 19:04:50 +02:00
|
|
|
MAKE_ENV+= MANZ="${MANZ}"
|
1999-06-28 13:42:28 +02:00
|
|
|
.endif
|
|
|
|
|
2003-09-02 08:59:37 +02:00
|
|
|
# generate ${PLIST} from ${_PLIST_SRC} by:
|
2003-12-16 13:36:54 +01:00
|
|
|
# - substituting for PLIST_SUBST entries
|
|
|
|
# - fixing list of man-pages according to MANZ, MANINSTALL.
|
2000-11-29 14:18:22 +01:00
|
|
|
# - adding symlinks for shared libs (ELF) or ldconfig calls (a.out).
|
1998-06-05 14:45:53 +02:00
|
|
|
|
2003-12-16 13:36:54 +01:00
|
|
|
# plist awk pattern-action statement to handle MANINSTALL
|
|
|
|
_PLIST_AWK_MANINSTALL= \
|
|
|
|
{ \
|
|
|
|
if (!"${MANINSTALL:Mmaninstall}" && \
|
|
|
|
match($$0, "^([^/]*/)*man/([^/]*/)?man[1-9ln]") ) { \
|
|
|
|
next; \
|
1999-03-12 11:19:14 +01:00
|
|
|
} \
|
2003-12-16 13:36:54 +01:00
|
|
|
if (!"${MANINSTALL:Mcatinstall}" && \
|
|
|
|
match($$0, "^([^/]*/)*man/([^/]*/)?cat[1-9ln]") ) { \
|
|
|
|
next; \
|
1999-03-12 11:19:14 +01:00
|
|
|
} \
|
2003-12-16 13:36:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# plist awk pattern-action statement to strip '.gz' from man
|
|
|
|
# entries
|
|
|
|
_PLIST_AWK_STRIP_MANZ= \
|
|
|
|
/^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)\.gz$$/ { \
|
|
|
|
$$0 = substr($$0, 1, length($$0) - 3); \
|
|
|
|
}
|
|
|
|
|
|
|
|
# plist awk pattern-action statement to add '.gz' to man entries
|
|
|
|
_PLIST_AWK_ADD_MANZ= \
|
|
|
|
/^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)$$/ { \
|
|
|
|
$$0 = $$0 ".gz"; \
|
|
|
|
}
|
2004-03-17 17:36:28 +01:00
|
|
|
|
2003-12-16 13:36:54 +01:00
|
|
|
# plist awk pattern-action statement to handle PLIST_SUBST substitutions
|
|
|
|
# BEWARE: the awk script quote is closed and reopened around the
|
|
|
|
# string argument of gsub() calls so historic quoting semantic of
|
|
|
|
# PLIST_SUBST is preserved.
|
|
|
|
# XXX `_str_quote_{start,end}_' is a gross hack to work around weird word
|
|
|
|
# splitting.
|
|
|
|
_PLIST_AWK_SUBST= { ${PLIST_SUBST:S|=|\\}/,_str_quote_start_|:S|$|_str_quote_end_);|:S|^|gsub(/\\\$\\{|:S|_str_quote_start_|"'|g:S|_str_quote_end_|'"|g} }
|
|
|
|
|
|
|
|
# plist awk pattern-action statement to rewrite "imake installed" catman pages
|
|
|
|
# as plain manpages.
|
|
|
|
_PLIST_AWK_IMAKE_MAN= \
|
|
|
|
/^([^\/]*\/)*man\/([^\/]*\/)?cat[1-9ln]\/.*0$$/ { \
|
|
|
|
n = match($$0, "/cat[1-9ln]"); \
|
|
|
|
sect = sprintf(".%s", substr($$0, n + 4, 1)); \
|
|
|
|
sub("/cat", "/man"); \
|
|
|
|
sub("\\.0$$", sect); \
|
|
|
|
}
|
|
|
|
|
2004-01-02 13:28:05 +01:00
|
|
|
# plist awk pattern-action statement to handle info files:
|
2004-02-16 14:21:34 +01:00
|
|
|
# generate list of files matching
|
|
|
|
# ${PREFIX}/${INFO_DIR}/filename(-[0-9]+)?(.gz)?
|
2004-01-02 13:28:05 +01:00
|
|
|
# for `filename' being each word of INFO_FILES in turn.
|
|
|
|
# Notes:
|
|
|
|
# - first the filenames matching ${PREFIX}/${INFO_DIR}/filename*
|
|
|
|
# are generated with ls then they are filtered by the exact pattern.
|
|
|
|
# - ${PREFIX}/${INFO_DIR}/filename is single quoted and single quote
|
|
|
|
# escaped
|
|
|
|
# XXX When all info file entries will be removed from PLIST files
|
|
|
|
# the non-BEGIN pattern-action statements generated below will be retired.
|
|
|
|
_PLIST_AWK_INFO=
|
2004-01-18 01:51:30 +01:00
|
|
|
.if ${PLIST_TYPE} == "static"
|
|
|
|
. if !empty(INFO_FILES)
|
|
|
|
. for _f_ in ${INFO_FILES}
|
2004-01-02 13:28:05 +01:00
|
|
|
_PLIST_AWK_INFO+= \
|
|
|
|
BEGIN { \
|
|
|
|
cmd="${_f_}"; gsub("'\''", "\\'\''", cmd); \
|
|
|
|
sub("^", "${LS} '\''${PREFIX}/${INFO_DIR}/", cmd); \
|
|
|
|
sub("$$", "'\''*", cmd); \
|
|
|
|
while ((cmd | getline l) > 0) { \
|
2004-02-16 14:21:34 +01:00
|
|
|
if (match(l, ".*/${_f_:S|+|\\\+|g}(-[0-9]+)?(\\.gz)?$$")) { \
|
2004-01-02 13:28:05 +01:00
|
|
|
sub("^${PREFIX}/", "", l); \
|
|
|
|
print l; \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
close(cmd); \
|
|
|
|
} \
|
|
|
|
/^${INFO_DIR:S|/|\\/|g}\/${_f_}(-[0-9]+)?$$/ { next; }
|
2004-01-18 01:51:30 +01:00
|
|
|
. endfor
|
|
|
|
. endif
|
2004-01-02 13:28:05 +01:00
|
|
|
.endif
|
|
|
|
|
2004-09-10 21:51:50 +02:00
|
|
|
# plist awk pattern-action statement to expand libtool archives into
|
|
|
|
# shared and/or static libraries.
|
|
|
|
#
|
|
|
|
.if ${PLIST_TYPE} == "dynamic"
|
|
|
|
_PLIST_AWK_LIBTOOL?= # empty
|
|
|
|
.else
|
|
|
|
. if !empty(LIBTOOLIZE_PLIST:M[yY][eE][sS])
|
|
|
|
_PLIST_AWK_LIBTOOL?= \
|
|
|
|
/\.la$$/ { \
|
|
|
|
system("cd ${PREFIX} && ${SH} ${_PRINT_LA_LIBNAMES} " $$0) \
|
|
|
|
}
|
|
|
|
. endif
|
|
|
|
.endif
|
|
|
|
|
2003-12-16 13:36:54 +01:00
|
|
|
# _PLIST_AWK_SCRIPT hold the complete awk script for plist target.
|
|
|
|
#
|
|
|
|
_PLIST_AWK_SCRIPT= '
|
|
|
|
# Do the substitutions
|
|
|
|
# See comments above about _PLIST_AWK_SUBST: it contains single quotes!
|
|
|
|
# So _PLIST_AWK_SCRIPT is intended to be single quoted.
|
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_SUBST}
|
2004-02-12 14:16:02 +01:00
|
|
|
# Generated entries for info files
|
|
|
|
.if !empty(INFO_FILES)
|
2004-09-10 21:51:50 +02:00
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_INFO}
|
2004-02-12 14:16:02 +01:00
|
|
|
.endif
|
2004-09-10 21:51:50 +02:00
|
|
|
# Expand libtool archives
|
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_LIBTOOL}
|
2003-12-16 13:36:54 +01:00
|
|
|
# Strip the '.gz' suffixes on man entries
|
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_STRIP_MANZ}
|
|
|
|
# Deal with MANINSTALL and man entries
|
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_MANINSTALL}
|
|
|
|
# Deal with "imake installed" catman pages
|
2001-11-21 14:44:44 +01:00
|
|
|
.if defined(USE_IMAKE) && ${_PREFORMATTED_MAN_DIR} == "man"
|
2003-12-16 13:36:54 +01:00
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_IMAKE_MAN}
|
|
|
|
.endif
|
|
|
|
# Add '.gz' suffixes on man entries if needed
|
|
|
|
.if defined(MANZ)
|
|
|
|
_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_ADD_MANZ}
|
|
|
|
.endif
|
|
|
|
# Print the entry
|
|
|
|
_PLIST_AWK_SCRIPT+= { print $$0; }
|
|
|
|
#
|
|
|
|
_PLIST_AWK_SCRIPT+= '
|
1999-03-12 11:19:14 +01:00
|
|
|
|
2002-04-16 06:10:08 +02:00
|
|
|
# GENERATE_PLIST is a sequence of commands, terminating in a semicolon,
|
|
|
|
# that outputs contents for a PLIST to stdout and is appended to
|
2003-09-02 08:59:37 +02:00
|
|
|
# the contents of ${_PLIST_SRC}.
|
2002-04-16 06:10:08 +02:00
|
|
|
#
|
|
|
|
GENERATE_PLIST?= ${TRUE};
|
2003-09-02 08:59:37 +02:00
|
|
|
.if ${PLIST_TYPE} == "dynamic"
|
|
|
|
_PLIST_IGNORE_CMD= \
|
|
|
|
( while read i; do \
|
|
|
|
ignore=no; \
|
|
|
|
for p in ${_PLIST_IGNORE_FILES}; do \
|
|
|
|
case "$$i" in \
|
|
|
|
$$p) ignore=yes; break ;; \
|
|
|
|
esac; \
|
|
|
|
done; \
|
|
|
|
[ "$$ignore" = "yes" ] || ${ECHO} "$$i"; \
|
|
|
|
done )
|
|
|
|
_GENERATE_PLIST= \
|
|
|
|
${FIND} ${PREFIX} \! -type d -print | ${SORT} | \
|
|
|
|
${SED} -e "s|^${PREFIX}/||" | \
|
|
|
|
${_PLIST_IGNORE_CMD}; \
|
|
|
|
${FIND} ${PREFIX} -type d -print | ${SORT} -r | \
|
|
|
|
${GREP} -v "^${PREFIX}$$" | \
|
|
|
|
${_PLIST_IGNORE_CMD} | \
|
|
|
|
${SED} -e "s|^${PREFIX}/|@unexec ${RMDIR} -p %D/|" \
|
|
|
|
-e "s,$$, 2>/dev/null || ${TRUE},";
|
|
|
|
.else
|
2004-09-10 21:51:50 +02:00
|
|
|
_GENERATE_PLIST= ${CAT} ${_PLIST_SRC}; ${GENERATE_PLIST}
|
2003-09-02 08:59:37 +02:00
|
|
|
.endif
|
2002-04-16 06:10:08 +02:00
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: plist
|
2000-01-05 17:55:32 +01:00
|
|
|
plist: ${PLIST}
|
2003-09-02 08:59:37 +02:00
|
|
|
${PLIST}: ${_PLIST_SRC}
|
1999-03-12 11:19:14 +01:00
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
2003-12-16 13:36:54 +01:00
|
|
|
{ ${_GENERATE_PLIST} } | ${AWK} ${_PLIST_AWK_SCRIPT} \
|
2000-12-30 12:19:04 +01:00
|
|
|
> ${PLIST}; \
|
|
|
|
${MAKE} ${MAKEFLAGS} do-shlib-handling \
|
2003-09-02 08:59:37 +02:00
|
|
|
SHLIB_PLIST_MODE=1
|
1998-08-26 18:50:48 +02:00
|
|
|
|
2003-12-23 19:27:24 +01:00
|
|
|
# generate ${MESSAGE} from ${MESSAGE_SRC} by substituting
|
2004-02-12 14:16:02 +01:00
|
|
|
# for MESSAGE_SUBST entries
|
2003-12-23 19:27:24 +01:00
|
|
|
|
|
|
|
.PHONY: message
|
|
|
|
message: ${MESSAGE}
|
|
|
|
.ifdef MESSAGE
|
|
|
|
${MESSAGE}: ${MESSAGE_SRC}
|
|
|
|
${_PKG_SILENT}${_PKG_DEBUG} \
|
|
|
|
if [ -z "${MESSAGE_SRC}" ]; then \
|
|
|
|
${ECHO} "${MESSAGE_SRC} not found."; \
|
|
|
|
${ECHO} "Please set MESSAGE_SRC correctly."; \
|
|
|
|
else \
|
|
|
|
${CAT} ${MESSAGE_SRC} | \
|
|
|
|
${SED} ${MESSAGE_SUBST_SED} \
|
|
|
|
> ${MESSAGE}; \
|
|
|
|
fi
|
|
|
|
.endif
|
|
|
|
|
1998-08-26 18:50:48 +02:00
|
|
|
# generate ${DESCR} from ${DESCR_SRC} by:
|
|
|
|
# - Appending the homepage URL, if any
|
|
|
|
|
2003-07-24 00:02:48 +02:00
|
|
|
.PHONY: descr
|
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
|
|
|
descr: ${DESCR}
|
1998-08-26 18:50:48 +02:00
|
|
|
${DESCR}: ${DESCR_SRC}
|
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
|
|
|
@${CAT} ${DESCR_SRC} >${DESCR}
|
1998-08-26 18:50:48 +02:00
|
|
|
.if defined(HOMEPAGE)
|
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
|
|
|
@\
|
|
|
|
${ECHO} >>${DESCR} ; \
|
|
|
|
${ECHO} "Homepage:" >>${DESCR} ; \
|
|
|
|
${ECHO} '${HOMEPAGE}' >>${DESCR}
|
1998-08-26 18:50:48 +02:00
|
|
|
.endif
|
2000-07-28 03:16:27 +02:00
|
|
|
|
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
|