Don't use getopt_long as replacement for getopt. It behaves different
and doesn't work well in combination with optreset. Instead use
getopt(3) from NetBSD if requested. Sync getopt_long.c with NetBSD while
here. Addresses issues with pkg_admin on Solaris reported by Tim Zingelman.
Important changes since 4.90:
- Fixed some issues with "package has been downgraded" warnings.
- The doc/CHANGES-* files can be checked individually now.
- Emit a warning if a package does not define PKG_DESTDIR_SUPPORT.
- In patch files, warnings about absolute pathnames, CPP macros and the
like are only emitted if the line starts with a "+". If the -Wextra
option is given, the context lines (starting with a " ") are also
checked.
- Added support for the new buildlink3.mk format.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
patch files. Up to now, the lines that only provide the context for the
patches have been checked for absolute pathnames and the like. Now, only
those lines that really add something to the patched file are checked.
The context lines are checked when the -Wextra option is given.
While here, added some comments to help me understand the code that I
wrote years ago.
Simplify archive handling by depending on archive_read_finish and the
close callback where needed. Fixes a file descriptor leak as side
effect as reported by wiz.
terminate the shell due to "set -e" when the [ ... ] part is false.
This behaviour seems correct to me, but I can't explain why this code
doesn't fail with our /bin/sh.