On 10/29/23 21:39, Tatsuki Makino wrote:
Daniel Engberg wrote on 2023/10/28 17:48:
If upstream uses GNU Autotools, use upstream release archives as they
usually contains a configure script ready to run which means that you
can avoid USES= autoreconf which is slow and adds unncessary
dependencies.
This has the following problem
Apply patches to {configure.ac,Makefile.am} and run autoreconf
versus
Apply patches to {configure,Makefile.in} and run ./configure immediately
Incidentally, some ports (e.g. security/heimdal*) do not know which it is.
I agree that some ports use autoreconf out of need instead of just
want. By the time a 'download release archive' step just to get files to
skip autoreconf is used, the release file should be used start to
finish. Some ports benefit from following nonrelease versions while some
projects have not released a release version that can be used.
I thought there was a way to get performance improvements by creating
a config.h before the tools are ran which will skip some checks when it
contains values of some of those checks. It can be handy to avoid
certain redundant tests; my machine will not change between big and
little endian anytime soon, nor will my FreeBSD install become Linux or
OSX anytime soon. If a port depends on another port, some values will
always be populated by that dependency. Trying to autopopulate such data
becomes harder when considering multiple versions due to dependency
choices, mixing packages from different ports tree versions, and
customized tests.
If dependencies are unbundled you can save I/O and processing time by
not extracting.
Example:
https://cgit.freebsd.org/ports/tree/net-mgmt/netdata/Makefile#n32
With -X (or --exclude-from) of tar, a list of unwanted files can be made into a
file.
If the file is subject to SUB_FILES, the options also allow selection of
unnecessary files.
... I have thought about this for a moment.
It was impossible because the timing when SUB_FILES is extracted is much later
than when it is possible to do so.
Thought there was a way but wasn't finding it in the handbook so
thank you. Mk/bsd.port.mk had that and similar variables noted. Now I
was able to add a string of exclusions to a port I was working on which
brings its own bundled copies of many things where before I was using an
{RM} in "post-extract:' section, though I guess that particular work
only matters if I succeed at porting that program which I got stuck on.
It would be nice if this was documented in the porter's handbook. It
could also serve additional benefit when options are changed for some
ports but would become much harder to determine when appropriate if not
familiar with the whole program + its build system. An overlooked area
of easy possible gain would be not extracting documents when DOC (minor
benefit) and NLS (major benefit for some) options are not enabled.
Any idea if extraction speed is increased if skipping content? I know
7-zip in Windows skips blocks of archives entirely when there is no
requested data remaining in each block.