Using PREVASSET does not work because the Makefile is fixed to the previous version of the Port, however, if a user wants to use the built assets from the Port, via the option ASSETS, which is enabled by default, simply updating distinfo is not enuf, because the Makefile does not honor ${DISTVERION} via ${_PREV_ASSET_VER}. So using the option PREVASSET will not find the newly built asset that matches the current ${DISTVERSION}. Would it not be better to enable the user to use locally built assets without modifying the port's Makefile? The Port already has a previous GNAT versions for bootstrapping, and it seems both PREVASSET and GNAT bootstrap are currently the same. If the Port can be bootstrapped with the version prior, than why does that have to be coded in PREVASSET, would it not be better to have have previous assets reflect the current port's version, and not the the bootstrapped version? I noticed this while working on GNAT-15 and 16, and I thought this was possible when GNAT-12 was initially committed. So another possible reason is having PREVASSET reflect the current version enables easier bootstrapping of the next version of GNAT.
If I remember well, initially PREV_ASSET_VER and PREV_ASSET_OSREL were not prefixed by "_" and set with ?=. For some reason someone changed that, but it would be easy to revert. By the way, your PR reminded me to refresh previous assets for GNAT14, and I just pushed it.
Oh shit that was probably me, sorry. Even reverting that still shifts internal mechanics to the user.