Most GPL-licensed software actually state that in addition to specific version of GPL they may be licensed under any later version:
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
There is huge difference between e.g. GPLv2 and GPLv2+. For instance, while GPLv2 is not compatible with GPLv3, GPLv2+ is.
Ports framework, though, does not currently differentiate between GPLv2 and GPLv2+.
Some ports mention this in a comment though:
LICENSE= GPLv2 # or later
And some erroneously declare dual licensing:
LICENSE= GPLv2 GPLv3 LICENSE_COMB= dual
To fix this, just add "plus" counterparts to all GPL licenses defined in bsd.license.mk. With this patch, it's possible to specify
LICENSE= GPLv2+
Note that in order to allow plus sign in variable name an extra space is needed after variable name in bsd.licenses.db.mk
The space is needed even in _FOO_${SOMETHING_WHICH_ENDS_WITH_A_PLUS}= case (but only for fmake)
Also, for convenience, split a list of all supported licenses (_LICENSE_LIST) into groups (misc/gpl/bsd/latex/artistic/etc.)