Для компиляции сборки PtokaX alex82-mods под OpenWrt необходимо создать собственный `Makefile` для системы сборки *OpenWrt Build System*, так как в репозитории разработчика его нет.
Ниже приведен готовый код `Makefile`, который учитывает зависимости (Lua, Zlib, SSL) и специфику этой модификации.
### Код Makefile
Создайте файл с именем `Makefile` по пути `feeds/yourfeed/ptokax-alex82/Makefile` или внутри папки вашего пакета:
```makefile
include $(TOPDIR)/rules.mk
PKG_NAME:=ptokax-alex82
PKG_VERSION:=0.5.2.1
PKG_RELEASE:=1
# Ссылка на исходный код ветки master из указанного вами репозитория
PKG_SOURCE_URL:=https://github.com/1o1o1/ptokax-alex82-mods/archive/refs/heads/master.tar.gz
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_HASH:=skip
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=Readme.txt
PKG_BUILD_DEPENDS:=lua5.1/host zlib/host
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/ptokax-alex82
SECTION:=net
CATEGORY:=Network
SUBMENU:=File Transfer
TITLE:=PtokaX DC++ Hub (alex82 mods)
URL:=http://www.ptokax.org/
# Зависимости целевой системы: Lua, стандартная библиотека++, потоки, сжатие, время, шифрование
DEPENDS:=+liblua +libstdcpp +libpthread +zlib +librt +libopenssl
endef
define Package/ptokax-alex82/description
PtokaX is a server (hub) for Direct Connect P2P network.
This package contains alex82 modifications with extended scripting API.
endef
# Правило сборки. Используем стандартный make проекта, передавая флаги линковщика.
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
LUA_FLAGS="-I$(STAGING_DIR)/usr/include -L$(STAGING_DIR)/usr/lib -llua -lm" \
ZLIB_FLAGS="-lz" \
ptokax
endef
# Правило установки файлов в прошивку
define Package/ptokax-alex82/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/PtokaX $(1)/usr/bin/
# Создание структуры директорий согласно документации мода
$(INSTALL_DIR) $(1)/etc/ptokax/cfg
$(INSTALL_DIR) $(1)/etc/ptokax/scripts
$(INSTALL_DIR) $(1)/etc/ptokax/texts
$(INSTALL_DIR) $(1)/etc/ptokax/logs
# Копируем пример конфига
$(INSTALL_CONF) $(PKG_BUILD_DIR)/cfg/Settings.xml.example $(1)/etc/ptokax/cfg/Settings.xml
endef
$(eval $(call BuildPackage,ptokax-alex82))
```
### Пошаговая инструкция по компиляции
**Важное замечание:** Сборка серверного ПО со сложной логикой работы с памятью (*PtokaX* написан на C++) требует значительных ресурсов. Рекомендуется выполнять кросс-компиляцию на мощном ПК с Linux (например, Ubuntu), а не непосредственно на роутере.
1. **Подготовка окружения:**
Убедитесь, что у вас настроена система сборки OpenWrt.
```bash
./scripts/feeds update -a
./scripts/feeds install -a
```
2. **Размещение файла:**
Создайте директорию для пакета, например: `package/network/ptokax-alex82/`.
Поместите туда созданный выше `Makefile`.
3. **Учет особенностей сборки alex82:**
В описании репозитория указано, что версия использует измененные имена библиотек Lua. Если при сборке возникнут ошибки вида `undefined reference to 'PXLfs'`, вам придется вручную отредактировать исходные файлы `.cpp` в папке `src/`, заменив вызовы `PXLfs` на стандартные `lfs` (Lua Filesystem), либо убедиться, что в системе установлена совместимая версия библиотеки `lua-filesystem`.
4. **Запуск сборки:**
Выберите ваш пакет в `menuconfig` (`Network -> File Transfer -> ptokax-alex82`) и запустите сборку:
```bash
make package/ptokax-alex82/compile V=s
```
5. **Установка зависимостей IP-To-Country:**
Автор модификации предупреждает, что старые базы GeoIP не подходят. После успешной компиляции скачайте актуальную базу IPv4/IPv6 и поместите её в `/etc/ptokax/cfg/` на вашем устройстве с OpenWrt.
После завершения процесса в папке `bin/packages/*/target/` появится установочный файл `.ipk`. Его можно установить на роутер командой `opkg install /path/to/file.ipk`.
