Pular para o conteúdo

Compilar o Flecha a partir do código

  • Um Mac com o Xcode e as ferramentas de linha de comando dele. Os scripts compilam para Apple silicon por padrão; defina FLECHA_ARCH=x64 para Intel.
  • O depot_tools no seu PATH.
  • Um checkout do Chromium na versão 158, num volume APFS, com 100 GB ou mais livres. Baixe seguindo as instruções de build para macOS do Chromium. A primeira build leva várias horas.
  • Node 22.5 ou mais novo (o auxiliar usa node:sqlite).

O chromium/scripts/env.sh diz onde cada coisa fica, e todos os scripts leem esse arquivo. Aponte para o seu ambiente com CHROMIUM_SRC (o src do checkout), DEPOT_TOOLS, FLECHA_PROFILE (o perfil de dev) e FLECHA_DISK / FLECHA_VOLUME se você guarda o checkout numa imagem de disco.

  1. Instale as dependências npm na raiz do repositório:

    Janela do terminal
    npm ci
  2. Aplique os patches e compile o Chromium. O apply.sh primeiro restaura todo arquivo que ele altera, então pode rodar de novo sem medo.

    Janela do terminal
    chromium/scripts/build.sh
  3. Abra a build de dev com um perfil próprio:

    Janela do terminal
    chromium/scripts/run.sh

A build de dev é uma component build, então depois da primeira vez uma mudança só religa uma biblioteca pequena.

O run.sh carrega o shell de chromium/shell/dist. Recompile e abra de novo:

Janela do terminal
npm run shell:watch # rebuild on save
npm run typecheck # must pass before you send a change

O auxiliar compila com npm run host:build. Para registrar um auxiliar que você mesmo compilou:

Janela do terminal
chromium/scripts/install-native-host.sh
  1. Rode chromium/scripts/apply.sh.
  2. Edite o Chromium, marcando suas linhas com // Flecha:. Sempre que der, coloque código novo em arquivos novos.
  3. Salve o diff como patch: git diff > chromium/patches/00NN-name.patch no checkout.
  4. Rode o apply.sh de novo para conferir que o patch aplica sem erros.
  • Pull requests vão para lucianodiisouza/flecha-browser. Bugs e ideias vão para as Issues.
  • Use conventional commits: feat, fix, docs, refactor, chore, com um escopo como shell, chromium ou native-host.
  • O TypeScript é strict e npm run typecheck precisa passar.
  • Nada de dependências novas sem motivo, e nada de código, assets ou texto do Arc.
  • Confira o modo claro e o escuro, e anexe um screenshot em mudanças de interface.
  • As contribuições têm licença MIT, como o resto do Flecha.

Próximo: como as versões são feitas.