standard output. These are error or warning messages, so they shouldn't
be "seen" by anything expecting the output of a "make" command to make
sense. This addresses PR pkg/32239 by following the suggestions by
Roland Illig.
if PKG_{FAIL,SKIP}_REASON is set. This fixes the behavior when one
invokes "make build" in a package that sets a fail or skip reason to
stop as soon as the reason is printed.
error and warning messages that are picked up by the error-check
target. Use them instead of using a bare ${ECHO} for more code clarity.
Implemented as suggested by Roland Illig.
which are invoked in recursive make calls for the "install" and
"package" targets respectvely. These recursive make calls prevent
the top-level make from seeing all of the targets and computing a full
dependency graph, so it becomes possible for some targets to be invoked
more than once. This change passes enough information along to the
recursive make calls and ensures that the source targets for the real-*
targets are only invoked once.
to install dependencies looked roughly like this:
${CAT} ${_DEPENDS_FILE} |
while read type pattern dir; do
cd $$dir && ${MAKE} install
done
In the code above, tghe recursive make invoked to install each dependency
does a just-in-time su to acquire root privileges for the installation,
but the su tries to get terminal settings for standard input (from
the pipe) using tcgetattr(), which fails and subsequently causes su
to exit with a puzzling "conversation failure" error. Rewrite the
loop to look (roughly) like this:
set -- `${CAT} ${_DEPENDS_FILE}`
while test $# -gt 0; do
type=$1; pattern=$2; dir=$3; shift 3
cd $$dir && ${MAKE} install
done
Note that this is potentially bad for shells with very low limits on
the maximum command line length, but at least this preserves file
descriptor 1 to reference the controlling tty unless the user does
something weird with input redirection when invoking make.
author has presumably given us valid *.po files, so skip performing
validity checks on the *.po file. This fixes building software where
the author has actually *not* produced proper *.po files, e.g.
net/gtk-gnutella, where the de.po files have msgid/msgstr pairs that
do not have matching numbers of format specifiers (%[a-z]).
creation fails, so remove instances where temporary files were created
then moved to the final target filename, and just directly create the
target. This is just for brevity/clarity, and saves a few tool calls.
variable to show whether the package supports running the check-files
target.
Set CHECK_FILES_SUPPORTED to "no" in pkgtools/pkg_install in the case
where the PREFIX does not match ${LOCALBASE} it's likely the tools are
being installed in some place that's completely outside pkgsrc control,
and check-files fails horribly in that case.
are generated for a target and output them all at once at the conclusion
of the target's invocation. The implementation is in bsd.pkg.error.mk,
which defines a macro target "error-check" that will print out any
non-empty warning and error files in ${WARNING_DIR} and ${ERROR_DIR}
and exit appropriately if there were errors.
Convert some targets that were just long sequences of ${ERROR_MSG} or
${WARNING_MSG} within a single shell statement to use the new delayed
error output via error-check.
Modify the compiler "fail" wrappers for C++ and Fortran to be less
verbose during invocation. Instead collect the warnings and only
print them at the end of the completed phase, e.g. after "configure"
and/or "build" completes.
The code here only worked due to many conincidences: Let's assume a
variable has the value "a b" and is used with the :Q operator, which
results in "a\ b" (a, backslash, space, b). When used in double quotes,
the shell command looks like:
echo "a\ b"
which, depending on the shell, may output the backslash literally or
not. In the case of this file, the ":Q" string was not passed to
echo(1), but to sed(1). sed(1) in turn interprets (backslash, space) in
the replacement text as equivalent to (space), and that's where the
backslash finally disappears. So it's only to this coincident that the
code worked although it was not correct.
the PLIST on platforms where IMAKE_MANINSTALL != MANINSTALL, e.g.
Solaris. Solution noted by adrianp in private email. This should fix
the problem noted in PR pkg/33629.
that "the files are in the PLIST but not in ${PREFIX}" if the files
that are installed overwrite other files already on the disk.
Overwriting files can legitimately happen when, e.g. doing a "make
update" or "make replace" without removing the old files, or when
re-running "make install" after fixing a broken Makefile during
development. While here, make the errors print to standard error
using ERROR_CAT.
in error message like 'WARNING: Warning: ...'.
2.) Replace "WARN_MSG" with "WARNING_MSG" which makes the "make package"
target work again for restricted packages like "acroread7".
resolved in much the same manner as variables set using :=. PKGNAME
could be set after including bsd.pkg.mk (which is poor form), and it's
too close to the pkgsrc-2006Q2 branch to fix that all over pkgsrc at
this time). This fixes building shells/static-bash2.