Skip to content
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

Изменения необходимые для сборки пакета в дистрибутивы Linux #2

Merged
merged 1 commit into from
Jun 29, 2017

Conversation

antohami
Copy link
Contributor

Здравствуйте!
Для того, чтобы собрать пакет для дистрибутива Linux (я собираю пакет для ALT Linux), нужно внести следующие изменения в код:

  1. Использовать системный matiec, т.е. находящийся в /usr/bin/iec2c и библиотеки в /usr/lib/matiec/ Если они установлены, естественно.
    Создал issue в репозитории skvorl/beremiz: https://bitbucket.org/skvorl/beremiz/issues/29/used-system-matiec
    Пакет matiec для ALT Linux собрал.

  2. Использовать системную библиотеку yapyserial, находящуюся либо в /usr/lib/libYaPySerial.so для 32 битной системы, либо /usr/lib64/libYaPySerial.so для 64 битной системы.

  3. Использовать системный /usr/bin/stm32flash

  4. RTE и необходимые для сборки прошивок исходники в Linux, думаю, хранить в $HOME/YAPLC
    В связи с этим нужно, чтобы путь до директории $HOME/YAPLC/RTE пользовался приоритетом.

@nucleron
Copy link
Owner

Добрый день, Антон!

Тут есть определенная проблема, связанная со спецификой софта степенью его зрелости:

  • Поддержки Beremiz дистрибутивами пока нет.
  • Поддержка matiec пока есть только у ALT.
  • stm32flash поддерживается довольно широко.
  • LibYaPySerial ПМСМ, - временный вариант, вероятно будут изменения, скорее всего будет отказ от нее в пользу чего-то ещё. Например, есть такой вариант замены, он, кстати, не всем нравится.
  • По RTE:

RTE и необходимые для сборки прошивок исходники в Linux, думаю, хранить в $HOME/YAPLC
В связи с этим нужно, чтобы путь до директории $HOME/YAPLC/RTE пользовался приоритетом.

Так делать нельзя: сборка программ для ПЛК зависит от заголовков RTE как минимум в части ABI.

Я считаю, что пока рано "опакечивать" (по многим причинам) YAPLC "правильным способом", максимум - сложить в /opt с той структурой дирректорий, которая есть сейчас.

С уважением,
Павел Бельтюков.

@antohami
Copy link
Contributor Author

antohami commented May 29, 2017

RTE и необходимые для сборки прошивок исходники в Linux, думаю, хранить в $HOME/YAPLC
В связи с этим нужно, чтобы путь до директории $HOME/YAPLC/RTE пользовался приоритетом.

Так делать нельзя: сборка программ для ПЛК зависит от заголовков RTE как минимум в части ABI.

Так я же путь к RTE пропатчил. Для сборки программ должно быть всё равно где находится RTE, в $HOME/YAPLC/RTE или ../RTE
А для сборки прошивки всё необходимое будет лежать в $HOME/YAPLC
Может я и заблуждаюсь. Нужно будет это всё хорошенько проверить ещё раз.

LibYaPySerial ПМСМ, - временный вариант, вероятно будут изменения, скорее всего будет отказ от нее в пользу чего-то ещё. Например, есть такой вариант замены, он, кстати, не всем нравится.

Да ничего страшного, что временный вариант. Устареет, удалю из репозитория (уже в репозитории) и соберу другую библиотеку ей на замену.

stm32flash поддерживается довольно широко.

В Альте, пока я не собрал на днях, не поддерживалось. pkgs.org говорит, что stm32flash есть в ALT, Debian, openSUSE, Slackware, Ubuntu. Маловато будет... Но у тех дистров, где таких пакетов нет, можно также рядышком собрать и пользоваться себе на здоровье как и прежде. Т.е. если в системе уже есть stm32flash, то зачем его собирать?

Поддержка matiec пока есть только у ALT.

Если появятся заинтересованные пользователи других дистрибутивов, то его будут собирать и в другие дистрибутивы.

Поддержки Beremiz дистрибутивами пока нет.

В ALT могу Beremiz хоть сегодня собрать. В принципе у меня всё готово, чтоб заработало. Сборке Beremiz и YAPLC в репозиторий больше всего мешает то, что они не оформлены в виде python пакетов c инсталятором.

Я конечно понимаю, что предлагаю весьма костыльный вариант с определением местонахождения системных библиотек и исполняемых файлов. Лучшим вариантом было бы сделать конфигурационный файл, в котором можно было бы менять пути до них. И графическое окошко для настройки этих путей внутри YAPLC. Тогда майнтейнер пакета мог бы спокойно поменять пути в этом конфиге и всё, все были бы довольны, никаких костылей. Но это достаточно масштабная работа.

Я считаю, что пока рано "опакечивать" (по многим причинам) YAPLC "правильным способом", максимум - сложить в /opt с той структурой дирректорий, которая есть сейчас.

В таком виде я в репозиторий собрать не могу. Политика дистрибутива не позволяет собирать пакеты в /opt. По моей задумке сборка в репозиторий могла бы привлечь внимание больший круг тестировщиков, хотя бы из числа участников forum.altlinux.org.

@nucleron
Copy link
Owner

Так я же путь к RTE пропатчил. Для сборки программ должно быть всё равно где находится RTE, в $HOME/YAPLC/RTE или ../RTE
А для сборки прошивки всё необходимое будет лежать в $HOME/YAPLC

Вижу. Но с Home есть проблема :(

Думаю, что нужны доп. условия для определения ОС...

Ещё, непонятно, что будет с конструкциями типа os.path.isfile("/usr/bin/stm32flash")

https://docs.python.org/2/library/os.path.html
On Windows, many of these functions do not properly support UNC pathnames. splitunc() and ismount() do handle them correctly.

То есть, даже если и заработает, то ни кто не даст гарантии, что не "отвалится" когда-то потом...

В таком виде пул-реквест принять не могу :(

По моей задумке сборка в репозиторий могла бы привлечь внимание больший круг тестировщиков, хотя бы из числа участников forum.altlinux.org.

В ALT могу Beremiz хоть сегодня собрать. В принципе у меня всё готово, чтоб заработало. Сборке Beremiz и YAPLC в репозиторий больше всего мешает то, что они не оформлены в виде python пакетов c инсталятором.

А вот это было бы очень здорово! Вы реально помогли бы сообществу разработчиков Beremiz (на самом деле помощь и разработчики нужны именно там).

@antohami
Copy link
Contributor Author

Добавил вовсе условия:
os.name=='posix' and <условие>

@nucleron
Copy link
Owner

Антон, подскажите, а в случае пакета, где будет лежать каталог beremiz?

@antohami
Copy link
Contributor Author

Антон, подскажите, а в случае пакета, где будет лежать каталог beremiz?

beremiz и yaplc будут лежать в одной и той же директории. Это директория хранения архитектурно-независимых python пакетов. В случае Альта и rpm-based дистрибутивов этой директорией является /usr/lib/python2.7/site-packages/
В случае Debian/Ubuntu это будет /usr/lib/python2.7/dist-packages/
Так как yaplc и beremiz будут находиться в одной директории, то код yaplc менять не надо.

@antohami
Copy link
Contributor Author

Патч Андрея Скворцова показал мне пример грамотного решения:
https://bitbucket.org/skvorl/beremiz/issues/attachments/29/skvorl/beremiz/1496144069.55/29/use_system_matiec.patch
Пулл-риквест постараюсь в ближайшее время обновить.

@nucleron
Copy link
Owner

Здравствуйте, Антон!

У меня пока будет работа по экспериментальной ветке RTE,
предлагаю вернуться к пул-реквесту чуть попозже :)

С уважением,
Павел Бельтюков

@antohami
Copy link
Contributor Author

Здравствуйте!
Сегодня наконец собрался с мыслями, как сделать правильно. Получилось весьма лаконично. Пулл-риквест обновил, теперь это один небольшой коммит. Проверил на ALT Linux и NUC-243.

@nucleron
Copy link
Owner

Принято.

@nucleron nucleron merged commit e1d87d1 into nucleron:master Jun 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants