created in a temp directory, issue a warning if we fail to install
it in the package directory. If the error happens on the top
level (master) cache file, then error out. For a subdirectory,
issue a warning and drop that directory from the master cache.
As data for a given binary package is loaded, increment a count
stored with PKGPATH as the index. Then use a psuedo-multidimensional
array with PKGPATH and the # as the index. This allows for much
faster lookups and scales linearly with the number of packages.
The old way scaled as the product of the number of pkgsrc entries
and the total number of binary packages. Not a pretty value.
This makes the actual README.html generation part run about 3x faster.
Approach suggested by soda.
some of the older packages on ftp.netbsd.org. For example,
pkg_info -B ftp://ftp.netbsd.org/pub/NetBSD/packages/1.5.2/vax/All/cascade-1.4.tgz
will give
OPSYS= NetBSD
instead of
OPSYS=NetBSD
due to a directory permissions error, then error out.
- when the master cache has just been newly created, don't also report
that the master cache is up to date.
Both were suggested by Christian Hattemer.
- completely redo the code which decides on the machine architecture,
operating system, and operating system version for the binary packages.
The old way just used to directory names to take a guess. The new
way creates a cache file containing meta-data for all the binary packages
in each "All" directory. This cache file is consulted when generating
the lists of available binary packages. The meta-data is obtained with
pkg_info so it should always be correct even if you do something silly
like mix OS_VERSION or MACHINE_ARCH packages up in the same directory.
Among the benefits are: works when PACKAGES is not $PKGSRC/packages,
works with a more or less arbitrary subdirectory structure, works
when there are subdirectories for multiple operating systems.
This portion of the fix should address PR25390.
The cache files are only updated when the contents of an "All" directory
changes or if the cache file format changes. There is some room for
improving the updating of the cache files, but its not too bad the way
it is.
- fix up some of the awk code so that generadme.awk works with Solaris
nawk as well as NetBSD's nawk and gawk (for pre-2.0 systems).
- remove some "if ! foo" shell constructs to increase portability.
- be more consistent with what variables get passed to mkreadme from
make and which ones are determined automatically. Mostly this meant
moving stuff into mkreadme to make it easier to run it standalone.
We no longer require that LIBTOOL_LA_FILES be defined in the package
Makefile, and the libtool archives should once again be listed in the
PLIST.
* Add a new yes/no variable "LIBTOOLIZE_PLIST" to control whether to
have bsd.pkg.mk automatically expand *.la files in PLISTs into the
true library names represented by the libtool archives.
* Rename the "transform-la" script to "print-la-libnames" which more
correctly reflects its function.
Many thanks to Todd Vierling for the original implementation and for
his contructive comments on how to improve the changes in this commit.
all of the .a, .la, .so, and .so.* files in the PLIST. This will
autogenerate the PLIST entries based on the informaion in the .la file.
This include print-PLIST support; if LIBTOOL_LA_FILES contains an
installed .la, its entries will be elided from the output PLIST template.
no listed homepage. Thanks to Grant Beattie for noting this and providing a
patch which I changed slightly.
- fix a bug which put extra stuff in the categories field. Thanks to Grant
for noting this.
several orders of magnitude and 'make index' now takes 30 minutes or so
instead of several days on my test machine. The approach now is to take
one pass through every package and extract some key information including
the explicitly listed dependencies. After the data is extracted, the
dependencies are flattened in one step which avoids the extremely
inefficient recursive make that was previously used.
- fix a bug in which caused only packages listed as DEPENDS to show
up in the 'packages needed to build' section. Now the BUILD_DEPENDS
are also shown. Thanks to Christian Hattemer for noting this.
- fix a bug which caused error messages claiming that category and top
level README.html files could not be created even though they were
created. This bug only showed up if an old README.html file did not
exist. As part of this, clean up and unify the code which handles
comparing the new README.html file to a possibly pre-existing one and
only copying it over if there is a change.
can be used anytime one needs to extract the complete dependency information
for a package for example, when creating a README.html file for the pkg.
The approach used by mkdatabase requires exactly one make call per package
which makes it scale well to packages with large dependency trees that have
many paths to the leaves.