Пакування плагінів
У репозиторії плагіна має бути набір файлів, які використовуються для створення пакету для цього плагіна на різних підтримуваних платформах. Нижче описано, що це за файли і що вони повинні містити.
Загальні файли
-
Description - Має містити короткий опис плагіна і буде використовуватися як опис для створюваного пакунка. Також переконайтеся, що опис плагіна має бути в одному рядку, оскільки наразі ми ще не підтримуємо багаторядкові описи.
-
Package - Це основний файл, де ми визначаємо набір змінних.
- plugin_name - Назва Плагіну.
- plugin_type - Тип Плагіну.
- plugin_install_dirname - Ім'я встановленого каталогу.
- plugin_package_name (Optional) - Назва пакету. Якщо його не вказано, назва пакета має збігатися з назвою плагіна.
- requirements - Список пакетів, що стосуються архітектури середовища виконання, має містити значення, розділені комами, без пробілів.
Примітка Для плагінів на C, якщо плагін потребує додаткових бібліотек для встановлення, встановіть змінну
additional_libsу файлі Package. Значення змінної повинно відповідати наведеному нижче контракту:
additional_libs="DIRECTORY_NAME:FILE_NAME" - у випадку одиночної бібліотеки additional_libs="DIRECTORY_NAME:FILE_NAME1,DIRECTORY_NAME:FILE_NAME2" - у випадку багаторазово го використання, де через кому вказано і каталог, і ім'я файлу
- service_notification.version - Він потрібен лише в тому випадку, якщо плагін є правилом сповіщень або плагіном доставки сповіщень. Він містить мінімальну версію сервісу сповіщень, яку вимагає плагін.
Плагіни на C
- VERSION - Він містить номер версії плагіна та використовується в процесі збірки для включення номера версії в код, а також в назву створеного файлу пакета.
- fledge.version - Він містить мінімальний номер версії Fledge, необхідний для плагіна.
- requirements.sh (Optional) - Він використовується для встановлення будь-яких додаткових бібліотек або інших артефактів, необхідних для створення плагіна. Він має форму скрипту оболонки. Цей скрипт, якщо він існує, буде запущено як частину процесу створення плагіна перед тим, як команда cmake буде видана в процесі збирання.
- extras_install.sh (Optional) - Це скрипт оболонки, який додається до пакета, щоб дозволити виконання додаткових команд під час встановлення пакета. Не всі плагіни вимагатимуть наявності цього файлу, і його можна пропустити, якщо для встановлення не потрібні додаткові дії.
Приклади імен файлів разом із вмістом
- VERSION
$ cat VERSION
1.9.2
- fledge.version
$ cat fledge.version
fledge_version>=1.9
- requirements.sh
$ cat requirements.sh
#!/usr/bin/env bash
which apt >/dev/null 2>&1
if [ $? -eq 0 ]; then
sudo apt install -y libmodbus-dev
else
which yum >/dev/null 2>&1
if [ $? -eq 0 ]; then
sudo yum -y install epel-release libmodbus libmodbus-devel
fi
fi
- Description
$ cat Description
Fledge modbus plugin. Supports modbus RTU and modbus TCP.
- Package
$ cat Package
# A set of variables that define how we package this repository
#
plugin_name=modbus
plugin_type=south
plugin_install_dirname=ModbusC
plugin_package_name=fledge-south-modbus
additional_libs="usr/local/lib:/usr/local/lib/libsmod.so*"
# Now build up the runtime requirements list. This has 3 components
# 1. Generic packages we depend on in all architectures and package managers
# 2. Architecture specific packages we depend on
# 3. Package manager specific packages we depend on
requirements="fledge"
case "$arch" in
x84_64)
;;
armv7l)
;;
aarch64)
;;
esac
case "$package_manager" in
deb)
requirements="${requirements},libmodbus-dev"
;;
esac
Примітка Якщо ваш пакет не підтримується на певній платформі, ви повинні завершити роботу з кодом виходу 1.
- service_notification.version
$ cat service_notification.version
service_notification_version>=1.9.2
Загальний пакет додаткових бібліотек
Нижче наведено пакети, які створили частину процесу створення Fledge, які зазвичай використовуються в плагінах.
- fledge-mqtt який є пакетною версією бібліотеки libpaho-mqtt.
- fledge-iec який є пакетною версією бібліотек IEC 60870 і IEC 61850.
- fledge-s2opcua який є пакетною версією бібліотек libexpat і libs2opc.
Якщо ваш плагін залежить від будь-якої з цих бібліотек, їх слід додати до змінної requirements у файлі Package, а не додавати як additional_libs, оскільки версіями цих бібліотек керує процес збірки та пакування Fledge. Нижче наведено приклад
requirements="fledge,fledge-s2opcua"
Плагіни на Python
- VERSION.{PLUGIN_TYPE}.{PLUGIN_NAME} - Він містить запаковану версію плагіна, а також мінімальну версію fledge, яку вимагає плагін.
- install_notes.txt (Optional) - Це простий текстовий файл, який можна включити, якщо під час інсталяції плагіна потрібно надати спеціальні інструкції. Ці примітки відображатимуться наприкінці процесу інсталяції пакета.
- extras_install.sh (Optional) - Це скрипт оболонки, який додається до пакета, щоб дозволити виконання додаткових команд під час встановлення пакета. Не всі плагіни вимагатимуть наявності цього файлу, і його можна пропустити, як що для встановлення не потрібні додаткові дії.
- requirements-{PLUGIN_NAME}.txt (Optional) -Це простий текстовий файл, який можна включити, якщо під час встановлення плагіна необхідно вказати залежності pip. Також переконайтеся, що файл має бути розміщено в каталозі python.
Приклади імен файлів разом із вмістом
- Description
$ cat Description
Fledge South Sinusoid plugin
- Package
$ cat Package
# A set of variables that define how we package this repository
#
plugin_name=sinusoid
plugin_type=south
plugin_install_dirname=sinusoid
# Now build up the runtime requirements list. This has 3 components
# 1. Generic packages we depend on in all architectures and package managers
# 2. Architecture specific packages we depend on
# 3. Package manager specific packages we depend on
requirements="fledge"
case "$arch" in
x86_64)
;;
armv7l)
;;
aarch64)
;;
esac
case "$package_manager" in
deb)
;;
esac
Note If your package is not supported for a specific platform then you must exit with exitcode 1.
- VERSION.{PLUGIN_TYPE}.{PLUGIN_NAME}
$ cat VERSION.south.sinusoid
fledge_south_sinusoid_version=1.9.2
fledge_version>=1.9
- install_notes.txt
$ cat install_notes.txt
It is required to reboot the RPi, please do the following steps:
1) sudo reboot
- extras_install.sh
#!/usr/bin/env bash
os_name=$(grep -o '^NAME=.*' /etc/os-release | cut -f2 -d\" | sed 's/"//g')
os_version=$(grep -o '^VERSION_ID=.*' /etc/os-release | cut -f2 -d\" | sed 's/"//g')
echo "Platform is ${os_name}, Version: ${os_version}"
arch=`arch`
ID=$(cat /etc/os-release | grep -w ID | cut -f2 -d"=")
if [ ${ID} != "mendel" ]; then
case $os_name in
*"Ubuntu"*)
if [ ${arch} = "aarch64" ]; then
python3 -m pip install --upgrade pip
fi
;;
esac
fi
- requirements-{PLUGIN_NAME}.txt
$ cat python/requirements-modbustcp.txt
pymodbus3==1.0.0
Зборка пакету
Спочатку вам потрібно клонувати репозиторій fledge-pkg. Тепер виконайте наступні кроки
$ cd plugins
$ ./make_deb -b <BRANCH_NAME> <REPOSITORY_NAME>
if everything goes well with above command then you can find your package inside archive directory.
$ ls archive