Jump to content

# Eclipse plugin package guidelines (Português)

4 languages

- English
- Español
- 日本語
- 中文（简体）

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Eclipse plugin package guidelines. Data da última tradução: 2018-10-30. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Há muitas maneiras de instalar os plugins do Eclipse, especialmente desde a introdução do diretório dropins no Eclipse 3.4, mas alguns deles são confusos, e ter uma maneira padronizada e consistente de empacotamento é muito importante levar a uma estrutura de sistema limpa. Não é fácil, no entanto, conseguir isso sem que o empacotador saiba todos os detalhes sobre como os plug-ins do Eclipse funcionam. Esta página tem como objetivo definir uma estrutura padrão e simples para PKGBUILDs de plugins do Eclipse, para que a estrutura do sistema de arquivos permaneça consistente entre todos os plugins sem que o empacotador seja iniciado novamente para cada novo pacote.

## Estrutura e instalação de plugins do Eclipse

O plug-in típico do Eclipse contém dois diretórios, `features` e `plugins` e, desde o Eclipse 3.3, eles podem ser colocados apenas em `/usr/lib/eclipse/`. O conteúdo desses dois diretórios pode ser mesclado com o de outros plugins, e criou uma confusão e tornou a estrutura difícil de gerenciar. Também foi muito difícil dizer rapidamente qual pacote continha qual arquivo.

Ainda há suporte a esse método de instalação no Eclipse 3.4, mas o preferido agora está usando o diretório `/usr/lib/eclipse/dropins/`. Dentro deste diretório pode-se viver um número ilimitado de subdiretórios, cada um contendo seus próprios subdiretórios `features` e `plugins`. Isso permite manter uma estrutura limpa e arrumada e deve ser o modo de empacotamento padrão.

## Empacotamento

### Exemplo de PKGBUILD

Arquivo está um exemplo, nós vamos detalhar como personalizá-lo.

    PKGBUILD-eclipse.proto

    pkgname=eclipse-mylyn
    pkgver=3.0.3
    pkgrel=1
    pkgdesc="A task-focused interface for Eclipse"
    arch=('any')
    url="https://eclipse.org/mylyn/"
    license=('EPL')
    depends=('eclipse')
    optdepends=('bugzilla: ticketing support')
    source=(https://download.eclipse.org/tools/mylyn/update/mylyn-${pkgver}-e3.4.zip)
    sha512sums=('aa6289046df4c254567010b30706cc9cb0a1355e9634adcb2052127030d2640f399caf20fce10e8b4fab5885da29057ab9117af42472bcc1645dcf9881f84236')

    prepare() {
      # remove features and plug-ins containing sources
      rm -f features/*.source_*
      rm -f plugins/*.source_*
      # remove gz files
      rm -f plugins/*.pack.gz
    }

    package() {
      _dest="${pkgdir}/usr/lib/eclipse/dropins/${pkgname/eclipse-}/eclipse"

      # Features
      find features -type f | while read -r _feature ; do
        if [[ "${_feature}" =~ (.*\.jar$) ]] ; then
          install -dm755 "${_dest}/${_feature%*.jar}"
          cd "${_dest}/${_feature/.jar}"
          # extract features (otherwise they are not visible in about dialog)
          jar xf "${srcdir}/${_feature}" || return 1
        else
          install -Dm644 "${_feature}" "${_dest}/${_feature}"
        fi
      done

      # Plugins
      find plugins -type f | while read -r _plugin ; do
        install -Dm644 "${_plugin}" "${_dest}/${_plugin}"
      done
    }

### Como personalizar a compilação

A variável principal que precisa ser personalizada é o `pkgname`. Se você estiver empacotando um plug-in típico, essa é a única coisa que você precisa fazer: a maioria dos plug-ins é distribuída em arquivos zip que contêm apenas os dois subdiretórios `features` e `plugins`. Portanto, se você estiver empacotando o plug-in `foo` e o arquivo de origem contiver apenas `features` e `plugins`, você só precisará alterar `pkgname` para `eclipse-foo` e você está pronto.

Continue lendo para ir aos componentes internos do PKGBUILD, que ajudam a entender como configurar a compilação para todos os outros casos.

### Revisão aprofundada do PKGBUILD

#### Nomenclatura de pacote

Os pacotes devem ser denominados `eclipse-nomeplugin`, para que sejam reconhecidos como pacotes relacionados ao Eclipse e seja fácil extrair o nome do plug-in com uma substituição de shell simples como `${pkgname/eclipse-}`, não tendo que recorrer a uma variável desnecessária `${_realname}`. O nome do plugin é necessário para arrumar tudo durante a instalação e evitar conflitos.

#### Arquivos

##### Extração

Alguns plugins precisam que os recursos sejam extraídos dos arquivos jar. O utilitário `jar`, já incluído no JRE, é usado para fazer isso. No entanto, `jar` não pode extrair para diretórios diferentes do atual: isso significa que, após cada criação de diretório, é necessário `cd` dentro dele antes de extrair. A variável `${_dest}` é usada neste contexto para melhorar a legibilidade e a limpeza do PKGBUILD.

##### Localizações

Como dissemos, os archives de origem fornecem dois diretórios, `features` e `plugins`, cada um com arquivos jar. A estrutura de dropins preferida deve ficar assim:

    /usr/lib/eclipse/dropins/pluginname/eclipse/features/recurso1/...
    /usr/lib/eclipse/dropins/pluginname/eclipse/features/recurso2/...
    /usr/lib/eclipse/dropins/pluginname/eclipse/plugins/plugin1.jar
    /usr/lib/eclipse/dropins/pluginname/eclipse/plugins/plugin2.jar

Esta estrutura permite misturar diferentes versões de bibliotecas que podem ser necessárias por diferentes plugins, sendo claro sobre qual pacote possui o quê. Ele também evitará conflitos caso pacotes diferentes forneçam a mesma biblioteca. A única alternativa seria dividir cada pacote de suas bibliotecas, com toda a confusão extra que requer, e nem mesmo seria garantido que funcionasse por causa dos pacotes que precisavam de versões de bibliotecas mais antigas.

Os recursos devem ser descompactados do arquivo jar, pois o Eclipse não os detectará de outra forma, e toda a instalação do plug-in não funcionará. Isso acontece porque o Eclipse trata os sites de atualização e as instalações locais de forma diferente (não pergunte por que, apenas faz).

#### A função build()

A primeira coisa a ser notada é o comando `cd ${srcdir}`. Geralmente os arquivos fonte extraem as pastas `features` e `plugins` diretamente sob `${srcdir}`, mas nem sempre é esse o caso. De qualquer forma, para a maioria dos plugins não padrão (de fato), esta é a única linha que precisa ser alterada.

Alguns recursos lançados incluem suas fontes também. Para uma versão normal, essas fontes não são necessárias e podem ser removidas. Além disso, os mesmos recursos incluem arquivos `*.pack.gz`, que contêm os mesmos arquivos em comparação com os arquivos jar. Então, esses arquivos podem ser removidos também.

A próxima é a seção `features`. Ele cria os diretórios necessários, um para cada arquivo jar, e extrai o jar no diretório correspondente. Da mesma forma, a seção `plugins` instala os arquivos jar em seus diretórios. Um ciclo de tempo é usado para evitar arquivos de nome engraçado.

## Solução de problemas

- Algumas vezes, a limpeza do Eclipse ajuda a corrigir alguns problemas:

      $ eclipse -clean

- Se novos plug-ins instalados não aparecerem no Eclipse, tente com um diretório limpo `~/.eclipse`, por exemplo, renomeando o existente. Esteja ciente de que isso, é claro, tornará todos os plugins instalados pelo usuário via Marketplace indisponíveis.

Category:

- Arch package guidelines (Português)