Qt: недостаточно места на диске для сохранения временных файлов! (Qt Installer + RAMDISK)


Вот такую раздосадованную ошибку выбрасывает установщик Qt, если не может определить кол-во свободного места на диске, на котором находится папка Temp:
Qt Installer Not Enough Space
На самом деле, не шибко частая ситуация, и возникнуть она может разве-что, если у Вас Temp располагался на Ramdisk (виртуальный диск, расположенный в оперативной памяти), как и в моем случае. Проблема в том, что драйвер рамдиска эмулирует не все функции настоящего диска, а именно их и использует установщик Qt для определения свободного места. При чём, в коде Qt есть заглушка на случай невозможности определения свободного места, но только для диска, на который производится установка, а для диска, который используется под временные файлы — её нет.

Очевидный обход данной проблемы — временное перемещение папки Temp обратно на "настоящий" диск и потом обратно, но неужели нам придется делать это при каждом обновлении Qt, и вообще для каждого установщика Qt (которым может быть укомплектован не только сам Qt, но также и сторонние программы, использующие его в качестве собственного установщика)?
Я создал тикет по этому поводу на багтрекере Qt, попутно обнаружив ещё два открытых (поправка: один закрытый, другой открытый), одному из которых скоро исполнится уже 8 лет. Не смотря на то, что моему тикету был присвоен приоритет P2: Important, он и по сей день (с апреля 2016) висит там нерешённым. Но на этом я не остановился, раз политика open-source "спасение — дело рук самих утопающих", что ж, будем справляться сами. Я немного разобрался в коде Qt Installation Framework, при этом наткнувшись на ту самую заглушку, которую почему-то не продублировали для директории временных файлов. Сделал аккуратный патч, так чтобы ничего не поломать, проверил, создал коммит на геррите, отписался в тикетах, и стал ждать. Но ничего не происходило. Спустя некоторое время, я написал двум самым активным maintainer'ам ветки QTIF — но мои письма были тоже благополучно проигнорированы. И вот уже прошёл срок (6 месяцев), когда мой коммит был помечен как заброшенный (abandoned), а мой бинарный патч (который я выложил вместе с патчем исходного кода) всё ещё работает на последней версии онлайн-установщика Qt :)(да, в Qt так ничего и не предприняли по этому поводу)

Казалось бы, Open-Source проект, с таким огромным сообществом, с невероятно долгим периодом активности (он даже старше Gnome), но вот с таким наплевательским (или даже высокомерным?) отношением мэйнтейнеров.

Прямо Stack Overflow повеяло...

Но довольно лирики, вот, собственно, ссылки на места, где можно скачать патч от этой ошибки:
MediaFire yadi.sk

Использованные утилиты:
x32dbg
dUP 2


Хоть он и был написан ещё для 2 версии онлайн-установщика Qt, он с тем же успехом работает и на последней версии (я проверял), также не исключено, что он будет работать и на других (в том числе не онлайн) установщиках стороннего софта, использующих Qt Installation Framework.

Комментарии

Популярные сообщения