| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
The update to ccache4 caused a large increase in dependencies,
breaking builds using e.g. "PKGSRC_COMPILER=ccache gcc", and the
pre-update discussion of consequences and how to deal with it did not
occur.
The right long-term solution is to have a variable to select which
ccache is used, and per-version circular dependency lists, accomoding
both those who wish to use ccache 3 on low-resource machines and those
who wish to use ccache 4.
With 20224 branch manager hat on, I don't want to deal with ccache
instability (or any instability at all now that we are past 12/1), so
I have set ccache.mk to depend on ccache3, the status quo ante
argumentum.
Note that if one has any ccache installed, it will be used, so people
that want to use ccache4 can just install it and then flip on
"PKGSRC_COMPILER=ccache gcc".
|
|
|
|
|
|
|
|
|
|
Commit r. 1.2044 "mk: Don't define DO_NADA to true." of bsd.pkg.mk
caused the checks executed when CHECK_FILES_STRICT=yes is set to fail
(e.g., "/bin/sh: -c: line 1: syntax error near unexpected token `;'").
(The pre-existing coding style that uses "true;" rather than a bare ":"
instead has been retained, in case there is an obscure (?) reason for
that approach.)
|
|
The reason why BUILDLINK_FILES_CMD does not use "pkg_info -qL" instead of
"pkg_info -f" is that -qL returns the full path of the files, whereas -f
already strips the prefix, so using -qL would not provide any advantage,
for example we would still need to call sed to remove the prefix.
|
|
The intent here is to simply ensure that the filter pipeline returns true,
and there's no need to fork an external process to do that.
|
|
I have not investegated deeper yet, inputmethod/uim builds fine with this change.
Revert removing cat.
|
|
Unfortunately Linux appears to have a much smaller limit on the number
of arguments allowed, so while this change was absolutely fine on many
other platforms, on Linux it fails with:
bmake[1]: exec(/bin/bash) failed (Argument list too long)
It will hopefully be possible to rearchitect the change in a different
way to avoid this, while still retaining most of the performance win.
|
|
Use bmake loop expansion to create all of the tools within the same shell
instance rather than spawning a new one for each, as well as aliases and
executable suffixes. Saves over 100 execs per build.
|
|
Each GCC_REQD entry has an associated cost as it invokes pkg_admin to see
if it's suitable, so only add 2.8.0 and 3.0 when absolutely necessary.
|
|
Avoid running rm/cat/mv on non-existent or zero-length files.
|
|
Inline ${RUN} calls where appropriate. Call mkdir directly rather than via
a shell when invoked as a single command. Avoid unnecessary mkdir calls.
|
|
Inline ${RUN} calls where appropriate. Avoid useless use of cat(1).
|
|
|
|
There is no point creating wrappers that warn about missing particular
autoconf, automake, and intltool commands if we aren't using GNU configure
at all.
Saves around 140 execs for every package without GNU_CONFIGURE=yes.
|
|
|
|
|
|
Inline ${RUN} calls where appropriate. Avoid useless use of cat(1). Avoid
unnecessary calls to rm. Use xargs(1) to reduce number of calls to egrep,
previously it was called once per file.
The last change in particular can have huge performance improvements, for
example saving around 5,000 execs during the build of ansible-core, and
significantly reducing the build and system times.
|
|
ECHO_BUILDLINK_MSG only echos something if PKG_DEBUG_LEVEL > 0 anyway, so
previously we were invoking a shell for each buildlink3 dependency to do
precisely nothing.
|
|
Inline ${RUN} calls where appropriate. Use builtin "test -s" instead of
our custom awk script when testing single files for zero size. Avoid
unnecessary calls to mkdir and rm. Improve logic of certain targets that
would previously perform some work, only to later remove it if a certain
condition failed.
Saves around 100 execs per build.
|
|
Inline ${RUN} calls where appropriate. Only call mkdir and rm when
necessary. Remove useless use of cat(1).
Saves at least 12 execs per build, but often a lot more depending on the
number of files that were not stripped or had CTF conversion applied.
|
|
Inline ${RUN} calls where appropriate. Only call mkdir when necessary.
Remove useless use of cat(1). Avoid unnecessary expr(1). Use bmake
loop expansion. Avoid unnecessary temporary files.
Saves around 50 execs per build.
|
|
Inline commands into the same ${RUN} where appropriate. Use a single mkdir
for multiple directories rather than a command per directory. Test for the
directory before calling mkdir where it may already exist to avoid an
unnecessary exec. Remove useless use of cat(1).
Saves around 20 execs per build.
|
|
Just query LOCALBASE from the package rather than relying on sed to parse
the output of "pkg_info -qp". Also remove a pointless 'true' line.
|
|
Ironically, DO_NADA was not doing nothing, it was invoking shells simply
to run true. Now that we are actually doing nothing, we're saving around
160 shell execs per build!
|
|
Use bmake loop expansion and inline commands to handle wrapper generation
in just a single shell per-wrapper.
Saves at least around 100 execs per package, with some packages and platforms
saving even more depending on the number of transformations performed.
|
|
Avoid forking a new shell for every 'echo' command, and use bmake loop
expansion to handle MULTI_VERSION section by a single shell.
Reduces the number of shells invoked during the scan phase by over
200,000, reducing system time and speeding up scan times.
|
|
Ironically, for something that was designed to improve performance, the way
the previous version of this worked actually made builds slower!
Use bmake loop expansions, remove useless use of cat, and reduce ${RUN}
calls to not only simplify the code but make it significantly faster.
|
|
This is already handled in cwrappers, if necessary.
|
|
|
|
bash does not have a print builtin, and on SunOS there is a /usr/bin/print
which is found by the libtool configure script (which has also made its way
into lots of third-party packages) and used for printing strings.
Create a broken print wrapper so that this is not found and the printf builtin
is used instead, significantly improving performance.
|
|
pkgsrc switched to using /bin/pwd back in 2003 due to some undocumented errors
in buildlink2, but I don't see any failures with this in bulk builds and it
avoids a large number of unnecessary execs. Limited to SunOS for now as that's
all I've tested, but other platforms are more than welcome to follow suit.
|
|
|
|
While these were useful in helping many packages to build out of the box,
it ended up resulting in some packages installing broken configuration
files as their configure tests for supported flags were passing.
For example, ruby packages were shipping an rbconfig.rb with LDFLAGS
containing -Wl,--no-as-needed, resulting in any ruby software built
outside of pkgsrc that required a compiler always failing.
|
|
A recent GNU grep release has started to add obnoxious warnings when calling
egrep/fgrep, so use grep with -E or -F flags respectively to avoid them.
|
|
|
|
|
|
Reported by Mike Pumford on pkgsrc-users
|
|
Leave CTF_FILES_SKIP and STRIP_FILES_SKIP purely for packages to set any
additional paths to skip.
|
|
Allows users to specify a suitably sanitised and tested CONFIG_SITE file, while
retaining the default behaviour of ignoring CONFIG_SITE to avoid surprises.
|
|
|
|
|
|
|
|
|
|
|
|
On a NetBSD system using "pkgsrc" mounted via automounter the path
to the dependency directories ends up as an absolute path.
Prepending "../.." to it creates an invalid path to the directory.
Avoid this by executing two separate "cd" commands.
|
|
|