New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Невозможно собрать из исходников на ROSA/Fedora/Ubuntu/Debian etc. #2811
Comments
ОК. Правильно ли я понимаю, что это не PascalABC.NET нельзя собрать из исходников, это компилятор csc, который компилирует PascalABC.NET, нельзя собрать из исходников? Net core компилятор нам точно не подойдет - PascalABC.NET базируется на Net Framework |
Да. Чисто теоретически собрать csc можно, но это будет очень большая работа. |
Ну, всё же тут PascalABC.NET ни при чем - надо решать другую задачу. И - я не верю в реальность того, что компилятор csc как-то там дискредитирован, поэтому будет собирать дискредитированный код, который будет генерировать дискредитированный код. Я как разработчик компиляторов считаю эту ситуацию вымышленной. Кстати, странно - под Alt Linux я просто устанавливал пакет Monodevelop и компилировал им PascalABC.NET - я был уверен, что Monodevelop использует компилятор mono. Поэтому то, что Вы пишете, выглядит странно |
Они берут csc блобами и подкладывают в пакет mono Внутри monolite.tar.gz https://git.altlinux.org/gears/m/mono.git?p=mono.git;a=blob_plain;f=.gear/monolite.tar.gz;hb=87c70230bd8d3c44ec0154c46a3224cb92454577 в т.ч. mcs.exe: |
Как смотрите на то, чтоб наладить выпуск официальных RPM-пакетов с pascalabc.net? spec могу написать и прислать, пакет должен получиться универсальным для ROSA, ALT, Fedora, CentOS и т.д. Собирать rpm можно будет на любой системе, где есть RPM: ROSA, ALT, Fedora, CentOS, Debian, Ubuntu, FreeBSD и т.д. |
Отлично смотрю! Как раз скоро версию 3.8.4 будем выпускать |
Откуда будем брать артефакты для запаковки в RPM? Есть 3 варианта:
Как будет удобнее? |
Мне кажется, надо как-то синхронизироваться с Alt Linux. Они для репозитория сделали такой rpm-пакет. Они его собирают из исходников. Я кстати не знаю, можно ли узнать, что там у rpm внутри. Мы там договаривались о структуре каталогов в частности. |
Да тут достаточно будет просто назвать пакет так же - pascalabcnet. Пакет скачать можно здесь: https://packages.altlinux.org/ru/sisyphus/srpms/pascalabcnet/rpms/ Внутри вот что:
Структура каталогов и откуда брать артефакты - отдельные вопросы. Мне кажется, лучше собирать один бинарник и его паковать и в zip, и в rpm, так не придется тестировать несколько разных. |
Меня смущает эта папка: pascalabcnet-3.8.3.3226 |
Это стандартная практика - класть документацию по пакету в папку /usr/share/doc/имя-версия. Ничего страшного в этом нет, на линуксе пакетный менеджер знает о каждой папке и файле внутри пакета, при установке другой версию папка от старой будет просто удалена. Меня в это структуре смущает вообще сама папка /usr/lib и то, что в ней лежат небинарные файлы. Для официального пакета я бы сделал |
Официальному пакету от разработчиков и пакету из репозитория дистрибутива нет необходимости иметь одинаковую структуру папок. Если они будут называться одинаково - pascalabcnet - то установка одного приведет к удалению другого, и проблем не возникнет. Разве что с точки зрения документации это нехорошо, если в ней нужно указать какие-то пути. |
Еще обратите внимание, что в пакете для ALT @sibskull заменяет msbuild на xbuild в скрипте |
Давайте. Там есть несколько фатальных мест в ядре компилятора - если не соберётся, то - всё. Но если это не они - исправим. |
Ну, я с нетерпением жду - хотелось бы выяснить, какие ошибки в msc |
Образ ОС: https://abf.io/platforms/rosa2021.1/products/340/product_build_lists/45977 , скачивать файл ROSA_2021.1_PLASMA5_x86_64_45977.iso Видео инструкция со звуком: https://file-store.rosalinux.ru/download/62395413c70e03d278d0a41c0d829d6f1dc906cc (simplescreenrecorder-2023-03-15_02.01.48.mkv) Патч: https://clbin.com/IYJyS |
Сразу при запуске батника:
То есть я правильно понял, вы используете устаревший инструмент, потому что это проще? В этом случае заменять конструкции компилятора на более древние, потому что устаревший инструмент их не понимает - не очень хорошее решение. Можно ли всё же заставить |
Как уже написал выше, теоретически собрать msbuild + csc из исходников без интернета можно, на практике пока не удалось ни в одном дистрибутиве. |
Обновитесь и выполните следующие команды
Затем вызовите ./_RebuildRelease.sh msbuild работает. xbuild устарел и не поддерживает современные конструкции C# |
DefaultLang.resources создается автоматически. |
Протестировано в Ubuntu 22.04 |
Это-то понятно, я писал не про просто сборку под Линуксом, а про опакечивание в репозиторий. |
Повторил всё что в видео. Те проблемы, которые отображаются на последнем экране, тоже переделываются наверное. Не знаю, возникнут ли фатальные. Патч пришлёте? |
Ссылка на патч выше рабочая, проверил: https://clbin.com/IYJyS |
Вы пробовали его собрать? |
Ну да, патч применил, следующую ошибку исправил. Дальше какие-то ошибки о том, что какие то типы неизвестны, хотя они известны. Мы не разрабатываем без IDE. Нет возможности установить MonoDevelop и в нем разрабатывать? А то всё время пытаться угадывать - слишком сложный проект |
Немного пробовали, пока не собрали. msbuild, скорее всего, относительно легко соберется, а вот со сборкой csc будет намного сложнее. xbuild ничем не мешает, если бы был csc, то xbuild бы справился вместо msbuild, в Альте справляется (где csc подложен блобом).
На счет MonoDevelop не знаю, если его можно будет настроить использовать mcs вместо csc, то, наверное, да. Сейчас попробую и отпишусь. |
Оно собралось через xbuild, потому что собиралось через csc, а не через mcs. Вся эта issue о невозможности сборки через mcs, а xbuild или msbuild, не имеет значения.
Вы поставили mono с официального сайта mono. Если поставить его из родных репозиториев Ubuntu, то будут описанные в этой issue проблемы, потому что там тоже не смогли собрать csc из исходников без Интернета.
Инструкцию по monodevelop проверю.
|
Надо как-то заставить monodevelop собирать через системный mono, а он в качестве зависимости тащит несистемный и на системном не работает. Либо переключить тащимый им mono на mcs. В самом monodevelop в прошлый раз таких настроек не нашел. Есть пара мыслей, может, получится.
Без этого monodevelop не сможет помочь в отладке кода под mcs (не настаиваю, что этим нужно заниматься...).
|
Но даже если мы сможем отпинать разлагающийся труп monodevelop, чтобы собрать код старым mcs, непонятно, что дальше делать, как все разработчики будуь дальше писать код...
|
Уже пытаются. Я вот это видел: https://github.com/dotdevelop/dotdevelop |
Полностью согласен. |
Я закрываю этот Issue? Проблема решена в #2871? |
Закрываю, поскольку проблема решена. Всё компилируется и собирается. |
Этот пост больше для информации. Сейчас pascalabcnet невозможно собрать из исходников на ROSA, Fedora, Ubuntu и пр. дистрибутивах, которые собирают mono из исходников.
Дело в том, что компилятор csc из них пока что не собирается, по крайней мере никто не обеспечил ее, и вряд ли это сделать просто, если вообще возможно, см. https://bugzilla.redhat.com/show_bug.cgi?id=1718439
mono патчится, чтобы запускал mcs вместо csc.
А собираемый в mono из исходников компилятор mcs не может собрать pascalbcnet, спотыкается на неподдерживаемом им синтаксисе.
В ALT Linux csc просто подкладывают скачанными с сайта mono бинарниками в пакет с mono.
Судя по https://github.com/dotnet/roslyn/blob/main/docs/infrastructure/cross-platform.md , теоретически можно попробовать собрать csc, но там nuget — подкачка из интернета, могут возникнуть разной степени серьезности проблемы при сборке без интернета. Также еще потребуется MSBuild, https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Building-Testing-and-Debugging-on-.Net-Core-MSBuild.md , его тоже не просто будет нормально собрать.
Не знаю, подойдет ли такой csc для mono.
Если будут какие-то подвижки, отпишусь здесь.
The text was updated successfully, but these errors were encountered: