simetnicbr / simetbox-openwrt-feed

SIMETBox package feed for OpenWRT (comece aqui/start here!)
http://simet.nic.br/simetbox
GNU General Public License v2.0
75 stars 13 forks source link

Suporte a compilação usando SDK #23

Open allgood opened 4 years ago

allgood commented 4 years ago

É interessante se tiver suporte para compilação usando SDK, de forma que a compilação se dá em menos tempo e gera pacotes compatíveis com os releases binários oficiais do openwrt.

Eu tentei fazer com o seguinte roteiro, mas tive problemas de dependência recursiva, e após ajustado manualmente com esse commit ( https://github.com/ctodobom/simetbox-openwrt-feed/commit/d97733568c985d7a9481bfd21dfcf23bcba37605 ), e após instalados os pacotes, não consegui rodar o teste.

obtain the sdk

add the feed

echo "src-git simetbox https://github.com/simetnicbr/simetbox-openwrt-feed.git" >> feeds.conf.default

install source packages

./scripts/feeds update -a ./scripts/feeds install -p simetbox -a

create signing key

./staging_dir/host/bin/usign -G -s ./key-build -p ./key-build.pub -c "SIMETBOX Build signing key"

build

make

Note: To speed up the build you can add -j5 if you have a quad-core CPU or -j9 if you have a octa-core CPU

build index

make package/index

publish

After the last command, folder ./bin/packages/<arch>/simetbox/ will have the built packages, it can be published on any URL like "https:///simetbox/packages//simetbox/"

use repository on an openwrt installation

1. get key fingerprint with

From SDK folder, use the command

./staging_dir/host/bin/usign -F -p ./key-build.pub

2. copy content of key-build.pub into device

obtain the content of key-build.pub with

cat key-build.pub

Paste it into the device with the fingerprint obtained on previous command, on folder /etc/opkg/keys/, example: /etc/opkg/keys/1301dcaaf2d17be3

3. install desired packages

On the device shell opkg install simetbox-openwrt-luci

hmh commented 4 years ago

O suporte a buildbot (e provavelmente junto com ele, ao modo SDK) está no nosso mapa, mas estamos terminando algumas altreações de altíssima prioridade antes.

Entretanto, atentar para as dificuldades em ter um busybox "custom", o SDK não te salva deste requerimento. Nem sempre é possível resolver com defines no Makefile...

allgood commented 4 years ago

Qual é a necessidade no busybox? alguma opção que não está no build default?

hmh commented 4 years ago

Várias, a mais "gritante" é traceroute por ICMP, tem uma gigantesca operadora que quebrou o traceroute em UDP. Existem outras. Em geral estão todas documentadas ou como depends (o build falha se não estiverem ligadas).

allgood commented 4 years ago

Em outro projeto eu fiz uma versão modificada do dnsmasq, com código, patches e opções diferentes do "oficial" mas que substitui ele. Não seria uma boa ideia fazer um pacote busybox-simet que conflita com e subsitui o "principal" e é dependência dos scripts do simet?

Imagino que no caso do busybox pode ser complicado porque é ele mesmo que roda os scripts de atualização dos pacotes, de repente durante a troca o sistema pode acabar quebrado a ponto de não conseguir se recuperar, mas de repente a ideia serve.

hmh commented 4 years ago

Estamos utilizando o SDK para gerar imagens agora, então em tese poderíamos disponibilizar a "nossa versão do SDK" que utiliza o nosso "fork" do openwrt (em geral, com backports extras) e configuração do BusyBox (habilita mais coisa).

Para utilizar os pacotes e SDKs do próprio OpenWrt, teríamos duas dificuldades a princípio:

Um pacote renomeado com config diferente em tese funciona, embora seja um peso permanente de manutenção. Só que o BusyBox é meio "especial" de tão fundamental, e de qualquer forma, apenas o OpenWrt 19.07 está em situação de funcionar de forma razoavelmente estável sem precisar ficar fazendo backport ou alterações.

Parece que duas soluções agregariam valor suficiente para justificar o esforço:

Está em estudo, junto com alguma Web-GUI ou TUI para operar o SDK.