An existing installation of package gcc-gdc, the GNU D compiler gdc, malfunctions as specified below if the package dmd, the Digital Mars D compiler is subsequently installed.
Both compilers rely upon source includes for template instantiation. When dmd is installed, it places these in /usr/include/d/ whereas gdc has them placed in a gcc-gdc specific location. However, once dmd's include files are installed, gdc finds that location by default and uses it in place of its own.
This would not be a problem, excepting that the versions of D are not the same for dmd as gdc, the last following the latest gcc version from Void. So dmd has D version 2.113 whereas gdc has 2.108 at the time of writing.
This mismatch leads to linkage errors using gdc due unsatisfied dependencies at the time of writing. On the other hand dmd is fine, as it is unaware of the gdc installation.
The offending dmd include files in /usr/include/d/ are attributed to the package libphobos-2 that an installation of dmd also installs, (phobos being the D language standard library). A naive removal of the dmd package leaves libphobos-2 still installed, including its problematic include files.
Note1
The binary libraries of the two compilers do not interact as they even have different names.
Note2
It is not unusual to install both compilers, as dmd can be used to translate C header files into D which gdc currently does not.
An existing installation of package gcc-gdc, the GNU D compiler gdc, malfunctions as specified below if the package dmd, the Digital Mars D compiler is subsequently installed.
Both compilers rely upon source includes for template instantiation. When dmd is installed, it places these in /usr/include/d/ whereas gdc has them placed in a gcc-gdc specific location. However, once dmd's include files are installed, gdc finds that location by default and uses it in place of its own.
This would not be a problem, excepting that the versions of D are not the same for dmd as gdc, the last following the latest gcc version from Void. So dmd has D version 2.113 whereas gdc has 2.108 at the time of writing.
This mismatch leads to linkage errors using gdc due unsatisfied dependencies at the time of writing. On the other hand dmd is fine, as it is unaware of the gdc installation.
The offending dmd include files in /usr/include/d/ are attributed to the package libphobos-2 that an installation of dmd also installs, (phobos being the D language standard library). A naive removal of the dmd package leaves libphobos-2 still installed, including its problematic include files.
Note1
The binary libraries of the two compilers do not interact as they even have different names.
Note2
It is not unusual to install both compilers, as dmd can be used to translate C header files into D which gdc currently does not.