Jump to content

TheBB

Moderators
  • Posts

    2,410
  • Joined

  • Last visited

  • Days Won

    51

Posts posted by TheBB

  1. 2 часа назад, Аношин Евгений сказал:

    Как я понимаю, выделенное жирным - это диагноз по картинке.

    Да, и по логу выше...

    Скрытый текст

    закидываем архив

    screen_2023-01-27_09:26:59-ast1.png

    результат

    screen_2023-01-27_09:32:34-ast2.png

    создаём ещё один install

    screen_2023-01-27_09:33:15-ast3.png

    screen_2023-01-27_09:34:43-ast4.png

    передёргиваем флешку/диск

    screen_2023-01-27_09:36:20-ast5.png

     

  2. 2 часа назад, Аношин Евгений сказал:

    На флешке после этого наблюдаю следующую картину:

    Установка поверх установленной системы. Или ставьте и настраивайте Asterisk руками (в уже установленной системе Entware), или архивом из статьи (Entware c предустановленным Asterisk).

  3. 38 минут назад, Stanislav Degtyarev сказал:

    в чём может быть проблема?!

    Перевожу на русский

    39 минут назад, Stanislav Degtyarev сказал:

    Critical error: Ресурс недоступен. Проверьте настройки сети.

    Критическая ошибка: Ресурс недоступен. Проверьте настройки сети.

    От чего и почему не сработала команда `ping -c3 dns.google.com` (проверка ресурса по имени), мне не ведомо. Спросите у того, кто устройство настраивал, что там с настройками DNS.

  4. 1 час назад, Zeleza сказал:

    В приведенном Вами примере нет библиотек

    Действительно нет!

    ~ # 
    ~ # opkg list | grep -E '(libebml|libmatroska|pugixml|spdlog)'
    ~ # 
    

    Они, как тот суслик... Никто не видит, а они есть. )))

  5. ЧЯДНТ?

    9999.tar

    https://pastebin.com/AhueqJYM

    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*"
    ~ # 

     

     

  6. 1 час назад, Zeleza сказал:

    установить

    ???

    Создаете каталог libhttpserver и закидываете в него Makefile (libhttpserver) из comment=158866, свой Makefile правите, ориентируясь на Makefile (my-super-prog) из comment=158866. Собираете пакет, Дальше, если хотите, ставите на устройстро для проверки (см. лог из comment=158866).

     

     

  7. Статика )))

    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:~#

     

     

    • Thanks 1
  8. 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`ов категорически приветствуется )))

    • Thanks 1
  9. bump to 2023.1.5 (aarch64||mipsel) (прим. - отключить "zram")

    screen_2023-01-19_10:53:59-ha.png

    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
    

     

    ^ мож кому сгодиться )))

    • Thanks 2
  10. tmpl-skel.tar

    ---

    ~ # 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)
    ~ #

     

    • Thanks 2
  11. Если libmicrohttpd собирать статикой, тогда PKG_BUILD_DEPENDS:=libmicrohttpd , чтоб собрался до того как (поиск по BUILDONLY). Если включать в свой проект динамикой (my-super-prog), можно не нужно (если отдельно не паковать libmicrohttpd, зачем?). Собсна, всё зависит от конечной цели. Вариантов много - от простого и неприхотливого до сложного и ненужного... чем проще, тем надёжней.

  12. Что ж, не хотите статику (см. выше), будет динамика (один из вариантов)

    Скрытый текст
    # 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
    

     

     

    • Thanks 1
  13. 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 поможет

  14. Не `./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`ы выше - не готовое решение, а болванки-заготовки (вариации на тему)

  15. 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

    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))
    

     

     

    • Thanks 3
  16. и это простейший пакет...  (((

    в сгенерированные 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 этого не нашел.

    изучать систему сборки

    • Thanks 1
  17. 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
    ~ # 

     

    • Thanks 1
  18. Скрытый текст
    # 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))
    

     

     

  19. https://openwrt.org/docs/guide-developer/packages#buildpackage_variables

    язык - с++; сист. сборки - autotools; зависимости - libstdcpp (точняк) + libmicrohttpd (">= 0.9.64") + gnutls ("[Optionally]: for TLS (HTTPS) support") + м.б. ещё что-то (см. в configure.ac)

  20. 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

    или любым другим способом, вплоть до ручного прописывания в файлы...

  21. ~ # 
    ~ # 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
    ...

    дальше, сами ...

    screen_2023-01-08_21:13:18-ice.png

    • Upvote 1
×
×
  • Create New...