USE_DOTNET

Разработка на C# под linux
 
Вопрос, который не даёт мне покоя:
зачем сборки (assemblies) собирать для нескольких разных платформ (3.5, 4.5)?
- особенно учитывая, что 3.5 в gentoo уже не используется.

происходит это из-за того, что исходные тексты написанные для 4.5 невозможно скомпилировать на 3.5,
потому что они используют новые функции фреймворка.
Но умельцы изощряются и дорабатывают реализацию этих функций для старого фреймворка.
в результате получаются две разные версии .dll, которые тем не менее можно установить в один GAC
(зато нельзя поместить в один .pc-файл и поэтому надо делать отдельный .pc-файл для каждой версии фреймворка)

Для поддержки такой возможности введена переменная USE_DOTNET
(но почему не введён .eclass по аналогии с multilib для неуправляемых платформ?
потому что немного таких пакетов, которые собирают несколько версий под разные платформы)

Зачем вообще две разных переменных, одна для архитектуры, другая для платформы? Почему нельзя их объединить?
Разве программная "платформа" - это не набор зависимостей пакета?
Зачем было вводить дополнительно USE_DOTNET, нельзя ли было сделать два пакета с разными слотами?

я не говорю, что это плохо, просто прошу объяснить, почему это хорошо.
информация об установленных в системе слотов нужных пакетов итак есть в /var/lib/db (или как её там), информация о том, что нужно устанавливать есть в world (можно с рекурсивным указанием слота). Зачем дублировать это в тексте ebuild ?

какие пакеты нужны/подходят билду в качестве платформы уже записано в RDEPENDS cynede: если у него там написано, что нужен питон с такого-то слота, то именно такой и бует а если сделано по-другому, то наверное что-то мешало

у меня пока такое впечатление, что все эти танцы из-за того, что индусы (национальные особенности). Решили сначала делать слоты цифрами, а потом поняли, что нужны слоты именованные. Придумали синтаксис :* для зависимостей и добавили переменные