-
Posts
2,410 -
Joined
-
Last visited
-
Days Won
51
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by TheBB
-
-
2 часа назад, Аношин Евгений сказал:
На флешке после этого наблюдаю следующую картину:
Установка поверх установленной системы. Или ставьте и настраивайте Asterisk руками (в уже установленной системе Entware), или архивом из статьи (Entware c предустановленным Asterisk).
-
38 минут назад, Stanislav Degtyarev сказал:
в чём может быть проблема?!
Перевожу на русский
39 минут назад, Stanislav Degtyarev сказал:Critical error: Ресурс недоступен. Проверьте настройки сети.
Критическая ошибка: Ресурс недоступен. Проверьте настройки сети.
От чего и почему не сработала команда `ping -c3 dns.google.com` (проверка ресурса по имени), мне не ведомо. Спросите у того, кто устройство настраивал, что там с настройками DNS.
-
1 час назад, Zeleza сказал:
В приведенном Вами примере нет библиотек
Действительно нет!
~ # ~ # opkg list | grep -E '(libebml|libmatroska|pugixml|spdlog)' ~ #
Они, как тот суслик... Никто не видит, а они есть. )))
-
ЧЯДНТ?
my-super-prog_0.0.0-1_aarch64-3.10.ipk
my-super-prog_0.0.0-1_mipsel-3.4.ipk
my-super-prog_0.0.0-1_mips-3.4.ipk
Скрытый текст~ # ~ # find /opt -name "*libhttpserver*" ~ # ~ # opkg install my-super-prog_0.0.0-1_aarch64-3.10.ipk Installing my-super-prog (0.0.0-1) to root... Configuring my-super-prog. ~ # ~ # ldd /opt/sbin/my-super-cool-prog linux-vdso.so.1 (0x0000007f8880f000) libmicrohttpd.so.12 => /opt/lib/libmicrohttpd.so.12 (0x0000007f887a9000) libstdc++.so.6 => /opt/lib/libstdc++.so.6 (0x0000007f885fd000) libm.so.6 => /opt/lib/libm.so.6 (0x0000007f88539000) libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x0000007f88514000) libc.so.6 => /opt/lib/libc.so.6 (0x0000007f883a4000) libpthread.so.0 => /opt/lib/libpthread.so.0 (0x0000007f88376000) libgnutls.so.30 => /opt/lib/libgnutls.so.30 (0x0000007f88114000) /opt/lib/ld-linux-aarch64.so.1 (0x0000007f887e1000) libnettle.so.8 => /opt/lib/libnettle.so.8 (0x0000007f880b9000) libhogweed.so.6 => /opt/lib/libhogweed.so.6 (0x0000007f8805f000) libgmp.so.10 => /opt/lib/libgmp.so.10 (0x0000007f87fdf000) ~ # ~ # my-super-cool-prog & ~ # ~ # curl -GET -v http://localhost:8080/hello > GET /hello HTTP/1.1 > Host: localhost:8080 > User-Agent: curl/7.86.0 > Accept: */* > Data was: Now data is:no data passed!!! < HTTP/1.1 200 OK < Date: Sat, 21 Jan 2023 10:10:47 GMT < Content-Type: text/plain < Content-Length: 14 < Hello World!!!~ # ~ # ~ # ps | grep -v grep | grep my-super 30397 pts/0 00:00:00 my-super-cool-p ~ # ~ # find /opt -name "*libhttpserver*" ~ #
-
Я пример с gerbera (см. 1 из comment=158862) не зря привёл (https://github.com/Entware/entware-oldpackages-ports/blob/master/gerbera/Makefile#L22)
-
1 час назад, Zeleza сказал:
установить
???
Создаете каталог libhttpserver и закидываете в него Makefile (libhttpserver) из comment=158866, свой Makefile правите, ориентируясь на Makefile (my-super-prog) из comment=158866. Собираете пакет, Дальше, если хотите, ставите на устройстро для проверки (см. лог из comment=158866).
-
35 минут назад, TheBB сказал:
Build/Configure:=:
^ да, сразу, чтоб закрыть вопрос, отключение (сброс) конфигурирования (косметика, сравнить вывод c/без). )))
-
Что-то у меня такого нет...
33 минуты назад, Zeleza сказал:Добавление следующего кода помогло:
или
TARGET_CFLAGS += $(if $(CONFIG_mips),-fgnu89-inline)
- 1
-
Статика )))
1. libhttpserver
Скрытый текст# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=libhttpserver PKG_VERSION:=0.18.2 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/etr/libhttpserver/tar.gz/refs/tags/$(PKG_VERSION)? PKG_HASH:=1dfe548ac2add77fcb6c05bd00222c55650ffd02b209f4e3f133a6e3eb29c89d PKG_FIXUP:=autoreconf PKG_LICENSE:=LGPL-2.1-or-later PKG_LICENSE_FILES:=LICENSE PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk define Package/libhttpserver SECTION:=libs CATEGORY:=Libraries TITLE:=C++ library for creating an embedded Rest HTTP server URL:=https://github.com/etr/libhttpserver DEPENDS:=+libmicrohttpd +libstdcpp BUILDONLY:=1 endef define Package/libhttpserver/description libhttpserver is a C++ library for building high performance RESTful web servers. endef CONFIGURE_ARGS += \ --disable-doxygen-doc \ --disable-examples \ --disable-shared \ --enable-same-directory-build define Build/InstallDev $(INSTALL_DIR) $(1)/opt/include $(CP) $(PKG_INSTALL_DIR)/opt/include/* $(1)/opt/include $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.a $(1)/opt/lib $(INSTALL_DIR) $(1)/opt/lib/pkgconfig $(CP) $(PKG_INSTALL_DIR)/opt/lib/pkgconfig/*.pc $(1)/opt/lib/pkgconfig endef $(eval $(call BuildPackage,libhttpserver))
2. my-super-prog (заменить на)
Скрытый текст# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=my-super-prog PKG_VERSION:=0.0.0 PKG_RELEASE:=1 PKG_LICENSE:=WTFPL PKG_LICENSE_FILES:=LICENSE.txt PKG_BUILD_DEPENDS:=libhttpserver include $(INCLUDE_DIR)/package.mk define Package/my-super-prog SECTION:=My section CATEGORY:=My utils SUBMENU:=Super TITLE:=My super cool proga URL:= DEPENDS:=+libmicrohttpd +libstdcpp endef define Package/my-super-prog/description My super cool program. endef Build/Configure:=: TARGET_LDFLAGS += -lhttpserver -lmicrohttpd define Build/Compile ( cd $(PKG_BUILD_DIR); \ $(TARGET_CXX) $(TARGET_CPPFLAGS) $(TARGET_CXXFLAGS) \ -o my-super-prog my-super-prog.cpp $(TARGET_LDFLAGS); \ ) endef define Package/my-super-prog/install $(INSTALL_DIR) $(1)/opt/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/my-super-prog $(1)/opt/sbin/my-super-cool-prog endef $(eval $(call BuildPackage,my-super-prog))
Скрытый текстroot@Entware:~# opkg install my-super-prog_0.0.0-1_mips-3.4.ipk Installing my-super-prog (0.0.0-1) to root... Installing libgcrypt (1.10.1-1) to root... Downloading http://bin.entware.net/mipssf-k3.4/libgcrypt_1.10.1-1_mips-3.4.ipk Installing libmicrohttpd-ssl (0.9.75-1) to root... Downloading http://bin.entware.net/mipssf-k3.4/libmicrohttpd-ssl_0.9.75-1_mips-3.4.ipk Configuring libgcrypt. Configuring libmicrohttpd-ssl. Configuring my-super-prog. root@Entware:~# root@Entware:~# ldd /opt/sbin/my-super-cool-prog linux-vdso.so.1 (0x77381000) libmicrohttpd.so.12 => /opt/lib/libmicrohttpd.so.12 (0x7731a000) libstdc++.so.6 => /opt/lib/libstdc++.so.6 (0x77176000) libm.so.6 => /opt/lib/libm.so.6 (0x7706e000) libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x77048000) libc.so.6 => /opt/lib/libc.so.6 (0x76eb4000) libpthread.so.0 => /opt/lib/libpthread.so.0 (0x76e86000) libgnutls.so.30 => /opt/lib/libgnutls.so.30 (0x76c7e000) /opt/lib/ld.so.1 (0x77350000) libnettle.so.8 => /opt/lib/libnettle.so.8 (0x76c28000) libhogweed.so.6 => /opt/lib/libhogweed.so.6 (0x76bd6000) libgmp.so.10 => /opt/lib/libgmp.so.10 (0x76b4e000) root@Entware:~# root@Entware:~# opkg info my-super-prog Package: my-super-prog Version: 0.0.0-1 Depends: libc, libssp, librt, libpthread, libmicrohttpd, libstdcpp Status: install user installed Architecture: mips-3.4 Installed-Time: 1674216789 root@Entware:~# root@Entware:~# curl -XGET -v http://localhost:8080/hello Note: Unnecessary use of -X or --request, GET is already inferred. * Failed to connect to localhost port 8080 after 1 ms: Connection refused curl: (7) Failed to connect to localhost port 8080 after 1 ms: Connection refused root@Entware:~# root@Entware:~# my-super-cool-prog & root@Entware:~# root@Entware:~# ps | grep -v grep | grep my-super 7253 root 52940 S my-super-cool-prog root@Entware:~# root@Entware:~# curl -XGET -v http://localhost:8080/hello Note: Unnecessary use of -X or --request, GET is already inferred. > GET /hello HTTP/1.1 > Host: localhost:8080 > User-Agent: curl/7.82.0 > Accept: */* > Data was: Now data is:no data passed!!! < HTTP/1.1 200 OK < Date: Fri, 20 Jan 2023 12:45:53 GMT < Content-Type: text/plain < Content-Length: 14 < Hello World!!!root@Entware:~# root@Entware:~#
- 1
-
0. Намерено приведено неск. вариантов, чтоб показать разные способы.
1. Всё от Вас зависит. Выкинуть из проекта сборку libhttpserver (отдельно собирать статикой, см. BUILDONLY (gerbera+libebml+libmatroska+...)), изменить флаги сборки.
2. Выполняется последовательно, шаг за шагом. Как распишите, так и будет собираться.
3. Уже ответили. Для защиты файлов от перезаписи/удаления (если вносились изменения) при обновлении/удалении пакета (`opkg --force-overwrite` перезапишет).
4. Автогенерация. Используется, если отсутствует файл "configure" (чтоб сгенерировать) или патчатся configure.{ac,in} (чтоб переконфигурировать). Или расписываете ручками (2-4 Makefile`ы).
5. Уже ответили. А CMAKE_INSTALL служит для другого - аналог Build/InstallDev.
6. Уже ответили. По аналогии. Второй пост в теме: определить язык/систему сборки (см. пакеты: perl-*, php8-pecl-*, python*, samba4(waf), serf(scons), gensio(swig), mariadb(cmake), mpd(meson), torrserver(go), ...)
7. Т.к. производятся доп. действия (распаковка внешней зависимости и генерация файлов). Если перенесёте их в др. секцию, этап Build/Prepare можно выкинуть (будут выполнены действия по умолчанию).
8. Уже ответили. Собрать что-то, но без создания пакета.
9. Cм., во что разворачивается URL запроса (удалите dl/libhttpserver*, удалите знак "?" и попробуйте собрать пакет).
Втыкание по ссылкам и насилование Makefile`ов категорически приветствуется )))
- 1
-
В 14.01.2023 в 11:28, skysilver сказал:
Если возможно конечно.
возможно
В 14.01.2023 в 11:28, skysilver сказал:Обновите пожалуйста до версии 1.29.2
забирайте
- 2
-
bump to 2023.1.5 (aarch64||mipsel) (прим. - отключить "zram")
23 часа назад, al12s сказал:bump?
... done )))
---
2all (на закусь, внимательно следим за руками)
~ # ~ # ls -al /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py -rwxr-xr-x 1 root root 2953 Dec 28 20:04 /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py ~ # ~ # grep -r '^#!.*python' /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py #!/usr/bin/env python3 ~ # ~ # /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py -h -sh: /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py: not found ~ # ~ # /opt/etc/init.d/S01opt2usr start Mounting /usr/bin ... done. ~ # ~ # /opt/var/lib/homeassistant/deps/lib/python3.10/site-packages/wakeonlan.py -h usage: wakeonlan.py [-h] [-i ip] [-p port] [-n interface] mac address [mac address ...] Wake one or more computers using the wake on lan protocol. positional arguments: mac address The mac addresses of the computers you are trying to wake. options: -h, --help show this help message and exit -i ip The ip address of the host to send the magic packet to. (default: 255.255.255.255) -p port The port of the host to send the magic packet to. (default: 9) -n interface The ip address of the network adapter to route the magic packet through. (default: None) ~ #
`cat /opt/etc/init.d/S01opt2usr`:
Скрытый текст#!/bin/sh # color ansi_std="\033[m"; ansi_green="\033[1;32m"; ansi_red="\033[1;31m"; ansi_white="\033[1;37m"; ansi_yellow="\033[1;33m"; #[ "$1" != "start" ] && exit 0 USR_BIN="/usr/bin" BIND_DIR="/opt/tmp/$USR_BIN" check() { echo -e -n "$ansi_white Checking the mount point $USR_BIN... $ansi_std" if [ -n "$(mount | grep ' /usr/bin')" ]; then echo -e " $ansi_yellow already mounted. $ansi_std" else echo -e " $ansi_red not mounted already. $ansi_std" fi } start() { echo -e -n "$ansi_white Mounting $USR_BIN ... $ansi_std" if [ -z "$(mount | grep ' /usr/bin')" ]; then mkdir -p "$BIND_DIR" cp -r $USR_BIN/* $BIND_DIR cp -a /opt/bin/env $BIND_DIR mount -o bind $BIND_DIR $USR_BIN echo -e " $ansi_green done. $ansi_std" else echo -e " $ansi_yellow already mounted. $ansi_std" fi } stop() { echo -e -n "$ansi_white Unmounting $USR_BIN ... $ansi_std" if [ -n "$(mount | grep ' /usr/bin')" ]; then umount $USR_BIN rm -rf $BIND_DIR echo -e " $ansi_green done. $ansi_std" else echo -e " $ansi_red not mounted already. $ansi_std" fi } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; check|status) check ;; *) echo -e "$ansi_white Usage: $0 (start|stop|restart|status) $ansi_std" exit 1 ;; esac exit 0
^ мож кому сгодиться )))
- 2
-
---
~ # opkg install my-super-prog_0.0.0-1_mipsel-3.4.ipk Installing my-super-prog (0.0.0-1) to root... Configuring my-super-prog. ~ # ~ # ldd /opt/sbin/my-super-cool-prog linux-vdso.so.1 (0x77798000) libhttpserver.so.0 => /opt/lib/libhttpserver.so.0 (0x7770d000) libmicrohttpd.so.12 => /opt/lib/libmicrohttpd.so.12 (0x776d8000) libstdc++.so.6 => /opt/lib/libstdc++.so.6 (0x77534000) libm.so.6 => /opt/lib/libm.so.6 (0x7742c000) libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x77406000) libc.so.6 => /opt/lib/libc.so.6 (0x77273000) libpthread.so.0 => /opt/lib/libpthread.so.0 (0x77245000) libgnutls.so.30 => /opt/lib/libgnutls.so.30 (0x77046000) /opt/lib/ld.so.1 (0x77766000) libnettle.so.8 => /opt/lib/libnettle.so.8 (0x76fed000) libhogweed.so.6 => /opt/lib/libhogweed.so.6 (0x76f9a000) libgmp.so.10 => /opt/lib/libgmp.so.10 (0x76f12000) ~ #
- 2
-
Если libmicrohttpd собирать статикой, тогда PKG_BUILD_DEPENDS:=libmicrohttpd , чтоб собрался до того как (поиск по BUILDONLY). Если включать в свой проект динамикой (my-super-prog), можно не нужно (если отдельно не паковать libmicrohttpd, зачем?). Собсна, всё зависит от конечной цели. Вариантов много - от простого и неприхотливого до сложного и ненужного... чем проще, тем надёжней.
-
Что ж, не хотите статику (см. выше), будет динамика (один из вариантов)
Скрытый текст# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=my-super-prog PKG_VERSION:=0.0.0 PKG_RELEASE:=1 PKG_LICENSE:=WTFPL PKG_LICENSE_FILES:=LICENSE.txt PKG_BUILD_DEPENDS:=libmicrohttpd include $(INCLUDE_DIR)/package.mk define Package/my-super-prog SECTION:=My section CATEGORY:=My utils SUBMENU:=Super TITLE:=My super cool proga URL:= DEPENDS:=+libmicrohttpd +libstdcpp endef define Package/my-super-prog/description My super cool program. endef FILE_NAME:=libhttpserver FILE_VERSION:=0.18.2 FILE_SOURCE:=$(FILE_NAME)-$(FILE_VERSION).tar.gz define Download/libhttpserver FILE:=$(FILE_SOURCE) URL:=https://codeload.github.com/etr/libhttpserver/tar.gz/refs/tags/$(FILE_VERSION)? HASH:=1dfe548ac2add77fcb6c05bd00222c55650ffd02b209f4e3f133a6e3eb29c89d endef $(eval $(call Download,libhttpserver)) define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(HOST_TAR) -xzf $(DL_DIR)/$(FILE_SOURCE) -C $(PKG_BUILD_DIR) ( cd $(PKG_BUILD_DIR)/$(FILE_NAME)-$(FILE_VERSION); \ $(MAKE) -f Makefile.cvs; \ ) endef define Build/Configure ( cd $(PKG_BUILD_DIR)/$(FILE_NAME)-$(FILE_VERSION); \ ./configure \ --disable-doxygen-doc \ --disable-examples \ --disable-static \ --enable-same-directory-build \ $(CONFIGURE_ARGS); \ ) endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR)/$(FILE_NAME)-$(FILE_VERSION) all endef define Package/my-super-prog/install $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_BUILD_DIR)/$(FILE_NAME)-$(FILE_VERSION)/src/.libs/lib*.so* \ $(1)/opt/lib endef $(eval $(call BuildPackage,my-super-prog))
Скрытый текстxxx:...-mipsel_mips32r2_glibc-2.27/my-super-prog-0.0.0 ➜ ls -a1 . .. .built .built_check .configured_68b329da9893e34099c7d8ad5cb9c940 .pkgdir .prepared_e35f0301a323d88a69e74bc774b8aa56_6664517399ebbbc92a37c5bb081b5c53 .prepared_e35f0301a323d88a69e74bc774b8aa56_6664517399ebbbc92a37c5bb081b5c53_check ipkg-mipsel-3.4 libhttpserver-0.18.2 xxx:...-mipsel_mips32r2_glibc-2.27/my-super-prog-0.0.0 ➜ ls -a1 ipkg-mipsel-3.4/*/*/* ipkg-mipsel-3.4/my-super-prog/CONTROL/control ipkg-mipsel-3.4/my-super-prog/opt/lib: . .. libhttpserver.so libhttpserver.so.0 libhttpserver.so.0.18.1 xxx:...-mipsel_mips32r2_glibc-2.27/my-super-prog-0.0.0 ➜ cat ipkg-mipsel-3.4/my-super-prog/CONTROL/control Package: my-super-prog Version: 0.0.0-1 Depends: libc, libssp, librt, libpthread, libmicrohttpd, libstdcpp Source: package/9999/tmpl-skel SourceName: my-super-prog License: WTFPL LicenseFiles: LICENSE.txt Section: My section SourceDateEpoch: 1661329733 Architecture: mipsel-3.4 Installed-Size: 99656 Description: My super cool program. xxx:...-mipsel_mips32r2_glibc-2.27/my-super-prog-0.0.0
- 1
-
cd в/каталог/системы и `find ./package -type d -name "src"` (напр., package/network/ipv6/464xlat или package/utils/zyxel-bootconfig) примеров вагон.
Нифига не понял, вероятно, libhttpserver надо собирать статикой, типа
Скрытый текст# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=libhttpserver PKG_VERSION:=0.19.0 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=f91406798381435b46e0880a49a2325d67f8166a PKG_SOURCE_URL:=https://github.com/etr/libhttpserver PKG_MIRROR_HASH:=7fc1e9d89a9f1d76e3f14b38b9eb634a76727b4856f1b67f1b6cf33ee065204b PKG_LICENSE:=LGPL-2.1-or-later PKG_LICENSE_FILES:=LICENSE include $(INCLUDE_DIR)/package.mk define Package/libhttpserver SECTION:=libs CATEGORY:=Libraries TITLE:=C++ library for creating an embedded Rest HTTP server URL:=https://github.com/etr/libhttpserver DEPENDS:=+libmicrohttpd +libstdcpp BUILDONLY:=1 endef define Package/libhttpserver/description libhttpserver is a C++ library for building high performance RESTful web servers. endef CONFIGURE_ARGS += \ --disable-doxygen-doc \ --disable-examples \ --disable-shared define Build/Prepare $(call Build/Prepare/Default) ( cd $(PKG_BUILD_DIR); ./bootstrap; ) $(INSTALL_DIR) $(PKG_BUILD_DIR)/build endef define Build/Configure ( cd $(PKG_BUILD_DIR)/build; ../configure $(CONFIGURE_ARGS); ) endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR)/build all $(MAKE) -C $(PKG_BUILD_DIR)/build DESTDIR="$(PKG_INSTALL_DIR)" install endef define Build/InstallDev $(INSTALL_DIR) $(1)/opt/include $(CP) $(PKG_INSTALL_DIR)/opt/include/* $(1)/opt/include $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.a $(1)/opt/lib $(INSTALL_DIR) $(1)/opt/lib/pkgconfig $(CP) $(PKG_INSTALL_DIR)/opt/lib/pkgconfig/*.pc $(1)/opt/lib/pkgconfig endef $(eval $(call BuildPackage,libhttpserver))
переписывать лень, diff поможет
-
Не `./bootstrap`, а `./configure` (https://github.com/etr/libhttpserver/blob/master/configure.ac#L97). И это не дошло до `libnicrohttpd` (https://github.com/etr/libhttpserver/blob/master/configure.ac#L100-L138). Скорее всего, сборка с нуля (в $(STAGING_DIR)/opt/{include,lib} нету). Makefile`ы выше - не готовое решение, а болванки-заготовки (вариации на тему)
-
https://github.com/etr/libhttpserver/blob/master/INSTALL (autotools)
На "большом пингвине": cd ./куда-то/в/каталог/исходников; ./configure --чего-то=там; make; make install
Размазано по файлам, для примера (кратко)
1 получение исходного кода (готовый архив или клонирование репы) https://github.com/openwrt/openwrt/blob/master/include/download.mk
2 распаковка (если архивом) https://github.com/openwrt/openwrt/blob/master/include/package-defaults.mk#L65
3 наложение патчей (если нужно) https://github.com/openwrt/openwrt/blob/master/include/package-defaults.mk#L67
4 конфигурирование с заданными параметрами (./configure) https://github.com/openwrt/openwrt/blob/master/include/package-defaults.mk#L112
5 сборка (make) https://github.com/openwrt/openwrt/blob/master/include/package-defaults.mk#L142
6 установка (make install) https://github.com/openwrt/openwrt/blob/master/include/package-defaults.mk#L149
и
1,2,3 https://github.com/openwrt/openwrt/blob/master/include/package.mk#L200
4 https://github.com/openwrt/openwrt/blob/master/include/package.mk#L209
5 https://github.com/openwrt/openwrt/blob/master/include/package.mk#L218
6 https://github.com/openwrt/openwrt/blob/master/include/package.mk#L220
и т.д.
На "закуску" (diff в помощь) один из возможных вариантов Makefile`a (почти по шен-фуй)
Скрытый текст# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=libhttpserver PKG_VERSION:=0.19.0 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=f91406798381435b46e0880a49a2325d67f8166a PKG_SOURCE_URL:=https://github.com/etr/libhttpserver PKG_MIRROR_HASH:=7fc1e9d89a9f1d76e3f14b38b9eb634a76727b4856f1b67f1b6cf33ee065204b PKG_LICENSE:=LGPL-2.1-or-later PKG_LICENSE_FILES:=LICENSE include $(INCLUDE_DIR)/package.mk define Package/libhttpserver SECTION:=libs CATEGORY:=Libraries TITLE:=C++ library for creating an embedded Rest HTTP server URL:=https://github.com/etr/libhttpserver DEPENDS:=+libmicrohttpd +libstdcpp endef define Package/libhttpserver/description libhttpserver is a C++ library for building high performance RESTful web servers. endef CONFIGURE_ARGS += \ --disable-doxygen-doc \ --disable-examples define Build/Prepare $(call Build/Prepare/Default) ( cd $(PKG_BUILD_DIR); ./bootstrap; ) $(INSTALL_DIR) $(PKG_BUILD_DIR)/build endef define Build/Configure ( cd $(PKG_BUILD_DIR)/build; ../configure $(CONFIGURE_ARGS); ) endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR)/build all $(MAKE) -C $(PKG_BUILD_DIR)/build DESTDIR="$(PKG_INSTALL_DIR)" install endef define Build/InstallDev $(INSTALL_DIR) $(1)/opt/include $(CP) $(PKG_INSTALL_DIR)/opt/include/* $(1)/opt/include $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.{a,so*} $(1)/opt/lib $(INSTALL_DIR) $(1)/opt/lib/pkgconfig $(CP) $(PKG_INSTALL_DIR)/opt/lib/pkgconfig/*.pc $(1)/opt/lib/pkgconfig endef define Package/libhttpserver/install $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.so* $(1)/opt/lib endef $(eval $(call BuildPackage,libhttpserver))
- 3
-
и это простейший пакет... (((
в сгенерированные Makefile`ы */build_dir/target-*/libhttpserver-*/* (что ставится в includedir, что ставится в libdir, что ставится в pkgconfigdir и т.д.)
make install (PKG_INSTALL:=1)
~ # cd build_dir/target-mipsel* ~ # ls libhttpserver-0.18.2/ipkg-install/opt/*/* libhttpserver-0.18.2/ipkg-install/opt/include/httpserver.hpp libhttpserver-0.18.2/ipkg-install/opt/include/httpserverpp libhttpserver-0.18.2/ipkg-install/opt/lib/libhttpserver.a libhttpserver-0.18.2/ipkg-install/opt/lib/libhttpserver.la libhttpserver-0.18.2/ipkg-install/opt/lib/libhttpserver.so libhttpserver-0.18.2/ipkg-install/opt/lib/libhttpserver.so.0 libhttpserver-0.18.2/ipkg-install/opt/lib/libhttpserver.so.0.18.1 libhttpserver-0.18.2/ipkg-install/opt/include/httpserver: basic_auth_fail_response.hpp http_request.hpp create_webserver.hpp http_resource.hpp deferred_response.hpp http_response.hpp details http_utils.hpp digest_auth_fail_response.hpp string_response.hpp file_response.hpp webserver.hpp libhttpserver-0.18.2/ipkg-install/opt/lib/pkgconfig: libhttpserver.pc libhttpserver-0.18.2/ipkg-install/opt/share/cmake: Modules
дальше раскидывать на упаковку что нужно (бибки, бинарники, ...)
2 часа назад, TheBB сказал:define Package/libhttpserver/install
нужна dev-секция для включение в др. пакеты (заголовки,бибки, ...), добавляем
2 часа назад, TheBB сказал:define Build/InstallDev
1 час назад, Zeleza сказал:В документации по libhttpserver этого не нашел.
изучать систему сборки
- 1
-
1 час назад, Zeleza сказал:
+librt +libpthread
не нужно - https://github.com/Entware/Entware/blob/master/include/package-defaults.mk#L5
1 час назад, Zeleza сказал:+libgnutls
уже - https://github.com/Entware/entware-packages/blob/master/libs/libmicrohttpd/Makefile#L45
35 минут назад, Zeleza сказал:как понять куда и какие файлы библиотек и заготовочные файлы
6 минут назад, TheBB сказал:PKG_INSTALL:=1
~ # ls opt/* opt/include: httpserver httpserver.hpp httpserverpp opt/lib: libhttpserver.a libhttpserver.la libhttpserver.so libhttpserver.so.0 libhttpserver.so.0.18.1 pkgconfig opt/share: cmake ~ #
- 1
-
Скрытый текст
# SPDX-License-Identifier: WTFPL include $(TOPDIR)/rules.mk PKG_NAME:=libhttpserver PKG_VERSION:=0.18.2 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/etr/libhttpserver/tar.gz/refs/tags/$(PKG_VERSION)? PKG_HASH:=1dfe548ac2add77fcb6c05bd00222c55650ffd02b209f4e3f133a6e3eb29c89d PKG_FIXUP:=autoreconf PKG_LICENSE:=LGPL-2.1-or-later PKG_LICENSE_FILES:=LICENSE PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk define Package/libhttpserver SECTION:=libs CATEGORY:=Libraries TITLE:=C++ library for creating an embedded Rest HTTP server URL:=https://github.com/etr/libhttpserver DEPENDS:=+libmicrohttpd +libstdcpp endef define Package/libhttpserver/description libhttpserver is a C++ library for building high performance RESTful web servers. endef CONFIGURE_ARGS += \ --disable-doxygen-doc \ --disable-examples \ --enable-same-directory-build define Build/InstallDev $(INSTALL_DIR) $(1)/opt/include $(CP) $(PKG_INSTALL_DIR)/opt/include/* $(1)/opt/include $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.{a,so*} $(1)/opt/lib $(INSTALL_DIR) $(1)/opt/lib/pkgconfig $(CP) $(PKG_INSTALL_DIR)/opt/lib/pkgconfig/*.pc $(1)/opt/lib/pkgconfig endef define Package/libhttpserver/install $(INSTALL_DIR) $(1)/opt/lib $(CP) $(PKG_INSTALL_DIR)/opt/lib/libhttpserver.so* $(1)/opt/lib endef $(eval $(call BuildPackage,libhttpserver))
-
https://openwrt.org/docs/guide-developer/packages#buildpackage_variables
язык - с++; сист. сборки - autotools; зависимости - libstdcpp (точняк) + libmicrohttpd (">= 0.9.64") + gnutls ("[Optionally]: for TLS (HTTPS) support") + м.б. ещё что-то (см. в configure.ac)
-
41 минуту назад, p4tz сказал:
К сожалению, в entware это не работает
Чё, правда?
~ # cat /opt/etc/entware_release release=entware arch=mipsel cpu=mips32r2 cpu_subtype=unknown float=soft gcc=8.4.0 gcc_flags=-O2 -pipe -mno-branch-likely -mips32r2 -mtune=mips32r2 -fno-caller-saves -msoft-float libc=glibc libc_version=2.27 ~ # ~ # /opt/etc/init.d/S78icecast status Checking icecast... alive. ~ #
2 часа назад, TheBB сказал:~ # cat /opt/etc/passwd | grep ^ice icecast:x:87:87:icecast::/opt/bin/false ~ # cat /opt/etc/group | grep ^ice icecast:x:87: ~ #
^ это результат, после добавления пользователя/группы, а не добавление их:
addgroup -g 87 -S icecast
adduser -S -u 87 -s /opt/bin/false -h '' -G icecast icecast
или любым другим способом, вплоть до ручного прописывания в файлы...
-
~ # ~ # icecast -c /opt/etc/icecast.xml [2023-01-08 21:00:28] WARN CONFIG/_parse_root Warning, <location> not configured, using default value "Earth". [2023-01-08 21:00:28] WARN CONFIG/_parse_root Warning, <admin> contact not configured, using default value "icemaster@localhost". Couldn't find user "icecast" in password file Couldn't find group "icecast" in groups file [2023-01-08 21:00:28] WARN fserve/fserve_recheck_mime_types Cannot open mime types file /opt/etc/mime.types ERROR: You should not run icecast2 as root Use the changeowner directive in the config file ~ #
^ добавить пользователя/группу, что-то вроде:
~ # cat /opt/etc/passwd | grep ^ice icecast:x:87:87:icecast::/opt/bin/false ~ # cat /opt/etc/group | grep ^ice icecast:x:87: ~ #
~ # icecast -c /opt/etc/icecast.xml [2023-01-08 21:04:35] WARN CONFIG/_parse_root Warning, <location> not configured, using default value "Earth". [2023-01-08 21:04:35] WARN CONFIG/_parse_root Warning, <admin> contact not configured, using default value "icemaster@localhost". Changed groupid to 87. Changed supplementary groups based on user: icecast. Changed userid to 87. [2023-01-08 21:04:35] WARN fserve/fserve_recheck_mime_types Cannot open mime types file /opt/etc/mime.types FATAL: could not open error logging (/opt/var/log/icecast/error.log): No such file or directory FATAL: could not open access logging (/opt/var/log/icecast/access.log): No such file or directory FATAL: Could not start logging ~ #
^ создать каталог `mkdir -p /opt/var/log/icecast`
~ # icecast -c /opt/etc/icecast.xml [2023-01-08 21:07:09] WARN CONFIG/_parse_root Warning, <location> not configured, using default value "Earth". [2023-01-08 21:07:09] WARN CONFIG/_parse_root Warning, <admin> contact not configured, using default value "icemaster@localhost". Changed groupid to 87. Changed supplementary groups based on user: icecast. Changed userid to 87. [2023-01-08 21:07:09] WARN fserve/fserve_recheck_mime_types Cannot open mime types file /opt/etc/mime.types FATAL: could not open error logging (/opt/var/log/icecast/error.log): Permission denied FATAL: could not open access logging (/opt/var/log/icecast/access.log): Permission denied FATAL: Could not start logging ~ #
^ задать права на созданный каталог `chown icecast:icecast /opt/var/log/icecast`
~ # icecast -c /opt/etc/icecast.xml [2023-01-08 21:09:28] WARN CONFIG/_parse_root Warning, <location> not configured, using default value "Earth". [2023-01-08 21:09:28] WARN CONFIG/_parse_root Warning, <admin> contact not configured, using default value "icemaster@localhost". Changed groupid to 87. Changed supplementary groups based on user: icecast. Changed userid to 87. [2023-01-08 21:09:28] WARN fserve/fserve_recheck_mime_types Cannot open mime types file /opt/etc/mime.types ...
дальше, сами ...
- 1
Asterisk 18
in Вопросы по сборке и настройке Opkg
Posted
Да, и по логу выше...
закидываем архив
результат
создаём ещё один install
передёргиваем флешку/диск