The expressions for USE_BUILTIN.* and for IGNORE_PKG.* can be undefined.
The function 'empty' takes care of these, the direct expressions
generate a (misleading) error message 'Malformed conditional'.
pkgsrc does not support NetBSD 5 anymore.
Back then, when expanding the body of a .for loop, the variable values
were inserted verbatim in the body, allowing for lots of unintended
special effects, making it essentially impossible to use these values
directly in conditions.
In this case, the values do not contain double quotes, that's why
enclosing the ${_pkg_} in double quotes worked.
See src/usr.bin/make/unit-tests/directive-for.mk for more details,
search for '2008-12-21'.
Combining .for loops with 'empty(...)' conditions still does not work,
so replace these with direct comparisons. Before 2008-12-21, using
'empty(...)' was the safer variant because it avoided the uncontrolled
code injection.
No functional change.
For now the GCC "c99 == gnu99" override is kept, but gnu99 is now supported as
a specific value for USE_LANGUAGES, so we may want to be specific where
required.
c11 and c17 (and the corresponding gnu11/gnu17 versions) are newly supported.
In most cases, the command 'make cce' is all that is needed to add a
changes entry, so put it at the top of the documentation. The smaller
steps are useful when updating multiple packages at once, which is less
often the case.
Make the possible values for CTYPE stand out, instead of hiding them in
the body text.
The pkg-config files are not header files.
While here, use ':=' for the variable assignments above procedure files
and document how to check the results during development.
When enabled, pull in the pkgtools/mktools package to use C-based tools for
certain parts of the pkgsrc mk infrastructure. Default is off for now while
any portability issues are shaken out, but it has been tested successfully on
at least illumos, macOS, and NetBSD.
The first tool is mk-buildlink-symlinks which creates the buildlink3 symlinks
as part of the "wrapper" phase. This significantly improves performance,
especially with packages that have a lot of buildlink3 dependencies. For
example, the time for "bmake wrapper" in x11/kde-workspace4 goes from:
real 3:20.696394375
user 50.553556463
sys 2:23.883823896
to:
real 19.873100598
user 8.141441461
sys 11.740602820
It's expected that other tools will be added over time to speed up other parts
of the infrastructure.
Someone already dropped the FreeBSD bounds (previously FreeBSD-[5-9]*-*)
with the assumption we're only concerned with modern releases, so do the
same consistently for all, rather than adding more handling for NetBSD
10.x and above. (We can't reasonably be supporting NetBSD from more than
16 years ago, or OpenBSD from 20 years ago. And the DragonFly pattern
wasn't exact, either, as only 1.1 onward included pf.)
This is partly intended as a workaround to fix behaviour on NetBSD 8.x
where GCC 7 was being pulled in universally after the prior commits
here. Now it behaves as expected. There is an unaddressed issue in this
code that needs to be examined further. (This has been discussed in
more than one recent thread on teck-pkg@, including John Klos's report
of this issue.)
In any case, GCC 6 has also seen build improvements by nia@, who noted
it's safe to simply revert part of the original change set, in one of
those discussions on tech-pkg. (We can't use the hack introduced in the
prior revisions for GCC 6, though, or this same broken dependency
pattern occurs and will universally force GCC 6 instead of 7 on NetBSD
8.x.)
Tested on NetBSD 8.2_STABLE and 9.2_STABLE with various packages,
including tcsh, the original reported issue.
handling less repetitive.
To use, set in Makefile:
DISTNAME= exampleproject-1.2
MASTER_SITES= ${MASTER_SITE_GITLAB:=accountname/}
The following variables alter gitlab.mk behavior:
GITLAB_PROJECT defaults to PKGBASE
GITLAB_TAG defaults to PKGVERSION_NOREV
sometimes you want to override with v${PKGVERSION_NOREV}
SHA-1 commit ids are also acceptable
GITLAB_RELEASE defaults to not defined, set this to ${DISTNAME}
when packaging a release not based on a git tag.
GITLAB_SUBMODULES manually set submodule information:
values should be:
GitLab_user GitLab_project tag_or_hash submodule_path
GITLAB_TYPE overrides the autodetected MASTER_SITE URL scheme:
request a newer compiler. Stop selecting gcc6, it receives very
limited testing due to NetBSD 9 having gcc7, and probably doesn't
work due to some newer hardening checks stopping it from building.