Bug 34891

Summary: Патч для сборки FortranProject plugin
Product: Sisyphus Reporter: sorath <torokhov_s_a>
Component: codeblocksAssignee: Grigory Ustinov <grenka>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: grenka, grenka
Version: unstableKeywords: patch
Hardware: all   
OS: Linux   
Attachments:
Description Flags
FortranProject_autotools_build.diff none

Description sorath 2018-05-08 14:30:41 MSK
Архив с исходным кодом codeblocks-17.12 в каталоге "src/plugins/contrib/FortranProject" содержит исходный код плагина FortranProject ( http://cbfortran.sourceforge.net/ ), который обеспечивает автодополнение кода, поддержку отладки, генерацию Makefile, переход к объявлению и обратно, генерацию шаблонов и т.д. при написании программ на языке Fortran. В скриптах сборки autotools основной программы для него не описаны правила. Поэтому собранный пакет "codeblocks-contrib" его не содержит.

Если есть возможность, пересоберите, пожалуйста, codeblocks-17.12 с применением прикреплённого патча системы сборки. Патч взят из багзиллы Gentoo ( https://bugs.gentoo.org/643494 ).


P.S.

В том случае, если сборка после патча производится GCC-7 и новее, то дополнительно предварительно нужно применить патч: https://raw.githubusercontent.com/band-a-prend/gentoo/587ca5c3fee4dd1c6699a41871b643132081282f/dev-util/codeblocks/files/FortranProject_fix_build_gcc7_failed.patch

или (сылка на тот же патч в upstream)

https://sourceforge.net/p/fortranproject/code/184/

Точнее нужна даже только первая его часть для файла "parserf.cpp", иначе в процессе сборки FortranProject plugin будет появляться ошибка "call of overloaded ‘abs(unsigned int)’ is ambiguous".
Comment 1 sorath 2018-05-08 14:32:06 MSK
Created attachment 7534 [details]
FortranProject_autotools_build.diff
Comment 2 Grigory Ustinov 2018-05-08 15:15:40 MSK
Я правильно понимаю, что апстрим принял приложенный патч не полностью?
https://sourceforge.net/p/codeblocks/tickets/630/

В SVN я никак не могу отыскать концов этого патча. Покажите пожалуйста коммит, в котором они частично приняли его.
Comment 3 sorath 2018-05-08 16:49:52 MSK
(В ответ на комментарий №2)
> Я правильно понимаю, что апстрим принял приложенный патч не полностью?
> https://sourceforge.net/p/codeblocks/tickets/630/
> 
> В SVN я никак не могу отыскать концов этого патча. Покажите пожалуйста коммит,
> в котором они частично приняли его.

К сожалению, апстрим самого Codeblocks данный патч принять не может: 
1. плагин FotranProject имеет собственный репозиторий разработки и отсутствует в ветке trunk репозитория разработки Сodeblocks;
2. директорию "FotranProject" помещают в каталог "src/plugins/contrib" непосредственно перед архивированием "релиза";
3. патчи добавляются в ветку "codeblocks/trunk", а из-за отсутствия в "src/plugins/contrib" директории "FotranProject" на постоянной основе, он будет ломать сборку при выставлении "--with-contrib-plugins=all" - не найдёт каталог.

Из-за перечисленных выше причин, данный патч работает только для архива с релизом, в данном случае, 17.12. Более подробное обсуждение здесь: http://forums.codeblocks.org/index.php/topic,22448.0.html .

Плагин "FotranProject" в собранном виде поставляется в официальных бинарных сборках Code::Blocks для Windows начиная с версии 13.12, для Linux официальных поставок данного плагина в бинарных сборках нет. В лучшем случае, пользователи Linux могли собрать плагин вручную сами или использовать отдельную сборку Codeblocks от автора плагина.

Надеюсь, если пакет codeblocks будет пересобран с патчем, плагин будет полезен пользователям Alt Linux.
В данный момент патч применяется в "майских" сборках Code::Blocks в Gentoo и Rosa.


P.S.
Апстрим плагина FortranProject принял фрагмент данного патча ( https://sourceforge.net/p/fortranproject/code/187/ ) после релиза его версии 1.5, вошедшей в сборку codeblocks-17.12. Но оставшуюся часть апстрим Codeblocks принять, по описанной выше причине принят не может. В то же время, дополнительно апрстримом плагина были приняты дополнительные патчи ( https://sourceforge.net/p/fortranproject/code/188/ и https://sourceforge.net/p/fortranproject/code/189/ ). 

Таким образом, патчи 187, 188, 189 в сумме позволяют собрать данный плагин как отдельный пакет при установленном codeblocks. Но раз уж исходники уже и так лежат в архиве с самим codeblocks (для 16.01 они там тоже были, но тоже не собирались автоматически), то проще сразу собирать с применением предложенного патча, чем отдельным пакетом. Тем более, что к следующей версии плагина, его код будет синхронизирован с кодовой базой разработки Codeblocks и новая его версия не сможет быть собрана без отката некоторых изменений в его коде.
Comment 4 Grigory Ustinov 2018-05-10 16:39:30 MSK
apt-repo test 205838

Ваша проблема решилась?
Comment 5 sorath 2018-05-10 18:05:40 MSK
Спасибо. На вид работает. Codeblocks запускается, меню Fortran отображается в списке меню. Подсветка блоков начала программы, процедуры и цикла работает; сворачиваются бблоки кода. Также, например, работает смена регистра набранных символов (из меню Fortran).

Если б что-то было совсем не так, то после запуска codeblocks - он бы из-за сломанного плагина либо упал, либо выдал ошибку и отключил бы поломанный плагин.


Только файлы

/usr/share/codeblocks/images/16x16/fprojectjumpback.png
/usr/share/codeblocks/images/16x16/fprojectjumpforward.png
/usr/share/codeblocks/images/16x16/fprojectjumphome.png

и 

/usr/share/codeblocks/images/fprojectjumpback.png
/usr/share/codeblocks/images/fprojectjumpforward.png
/usr/share/codeblocks/images/fprojectjumphome.png
/usr/share/codeblocks/images/fprojectmakevisible.png
/usr/share/codeblocks/images/fprojectmakevisible16.png

должны устанавливаться пакетом codeblocs-contrib, а они установлены пакетом codeblocks - посмотрел вывод команды rpm -ql для данных пакетов. То есть список файлов в пакете codeblocks не должен измениться, так как как FortranProject является теперь (и должен быть) частью codeblocks-contrib.
Comment 6 Repository Robot 2018-05-10 20:59:03 MSK
codeblocks-17.12-alt2 -> sisyphus:

Tue May 08 2018 Grigory Ustinov <grenka@altlinux> 17.12-alt2
- Add patches for fix FortranProject plugin (Closes: #34891).
Comment 7 sorath 2018-05-10 22:11:45 MSK
(В ответ на комментарий №4)
> apt-repo test 205838
> 
> Ваша проблема решилась?

Спасибо большое. Расположение файлов не забыли поменять в итоговых пакетах?
Comment 8 Grigory Ustinov 2018-05-11 15:23:11 MSK
(В ответ на комментарий №7)
> (В ответ на комментарий №4)
> > apt-repo test 205838
> > 
> > Ваша проблема решилась?
> 
> Спасибо большое. Расположение файлов не забыли поменять в итоговых пакетах?

Можете проверить rpm -ql codeblocks | grep fproject. Не хотите ли вступить в team и иметь возможность самим собирать пакеты?
Comment 9 sorath 2018-05-11 22:06:37 MSK
Да, я утром уже проверил содержимое rpm-файлов, которые разошлись по зеркалам Sysiphus.

К сожалению, я не смогу выделить время на полноценную поддержку пакета :(