Pin down the versions of gcc, nasm, and python in the Dockerfile.
This avoids unintended/silent version changes of installed packages between image rebuilds.
The EDK2 build process can be quite sensitive in this respect.
Switching compiler versions often requires manual fixes.
Pinning might increase the work of maintaining the Dockerfile, since
we might have to follow the patch releases as they come / older versions
disappear from the servers, but at least we are made aware of the changes.
I do not think it is necessary to pin things like git, make, etc.
As suggested in the Tools, CI, code base meeting (2022-06-27) (https://github.com/tianocore/edk2/discussions/2614#discussioncomment-3040739):
Pin down the versions of gcc, nasm, and python in the Dockerfile. This avoids unintended/silent version changes of installed packages between image rebuilds. The EDK2 build process can be quite sensitive in this respect. Switching compiler versions often requires manual fixes.
Pinning might increase the work of maintaining the Dockerfile, since we might have to follow the patch releases as they come / older versions disappear from the servers, but at least we are made aware of the changes.
I do not think it is necessary to pin things like git, make, etc.