É possível incluir um patch na versão atual? Se sim, como?


15

Há algum tempo, relatei um bug no plugin Place Window do Compiz . É uma regressão bastante importante para as pessoas afetadas por ela: principalmente aquelas que usam o Gnome-Fallback, a julgar pelos relatórios.

Um patch apareceu pouco tempo depois. Criei um PPA para teste e todos os envolvidos até agora relatam que os problemas foram corrigidos. Ele até corrige outro bug . Eu testei com uma área de trabalho padrão do Unity e posso dizer (para o meu teste) que nenhum efeito adverso foi visível.

Quero enviar isso para o Ubuntu agora por dois motivos principais:

  • Sou egoísta. Não quero atualizar meu PPA sempre que uma nova versão do Compiz for enviada para a versão 12.04.
  • Eu não quero que os usuários do Ubuntu vejam suas janelas voando por causa de um inseto bobo.

Quero que esse patch seja enviado para a versão do Compiz do Ubuntu o mais rápido possível, para que possamos corrigir esses bugs e seguir em frente com nossas vidas.

De quem perna eu tenho que me curvar para colocar isso no Ubuntu agora?

Eu não mantenho este projeto e é uma coisa upstream, mas é bastante essencial para o Ubuntu. Eu poderia ir ao Compiz, mas imagino que, se eles aceitarem o patch, levará meses (pelo menos um lançamento) antes de chegar perto do Ubuntu.

E quando encontro a pessoa certa, como posso tornar o processo o mais liso possível para eles?

Eu quero que eles vejam meu pedido, digam "Sim, tudo está ótimo, pronto" e pronto. Não quero dezessete rodadas de e-mails abordando aspectos do patch. Mais importante, também não quero perder tempo.

E o que eu tenho para fornecê-los? Minhas habilidades de embalagem são ... lamentáveis. Esta foi a minha primeira tentativa de corrigir um pacote para redistribuição, então provavelmente cometi todos os erros de embalagem conhecidos pelo homem. Eles ficarão felizes com o patch original (para que possam aplicá-lo eles mesmos) ou devo reembalar as coisas para que o diff / changelog seja um pouco mais limpo (levei algumas voltas e o versionamento está em todo o lugar).

Nota: Esta pergunta é sobre o Compiz, mas eu preferiria que as respostas pudessem abordar outros estilos de pacote também, para que tenhamos um tópico abrangente e autoritário de como consertar as coisas.

Respostas:


14

Como Dobey mencionou, para que um patch seja aceito em uma versão já lançada do Ubuntu, ele deve passar pelo processo Stable Release Update (SRU). A barra de entrada para SRUs é bastante alta. Uma maneira simples de resumir o pensamento por trás do processo pode ser: "O bug que conhecemos é melhor do que o que não conhecemos". Na prática, isso significa que apenas correções de bugs direcionadas são permitidas e nenhuma alteração é "intrusiva".

Há vários requisitos que devem ser atendidos para prosseguir com uma SRU:

  • O bug foi corrigido na versão atual de desenvolvimento (ou seja, quantal).
  • A descrição do relatório de bug deve ser atualizada para incluir uma justificativa do motivo pelo qual a correção é necessária na versão estável, um caso de teste para reproduzir o bug e verificar se ele foi corrigido e uma discussão sobre o potencial de regressão da correção.
  • A equipe do Launchpad ubuntu-srudeve estar inscrita no relatório de erros.
  • O pacote é então carregado para ser liberado.-proposed Para que isso ocorra, você precisará passar pelo processo de patrocínio (mais informações abaixo).

Depois de tudo o que ocorreu, a equipe SRU verificará se o pacote -proposedresolve o erro. Em seguida, a embalagem será inserida -updatesapós passar um período mínimo de 7 dias.

Encontrar a pessoa certa

Sua pergunta sugere que, às vezes, o Launchpad parece que é onde os patches vão morrer. Infelizmente, se você não conhece o processo, pode parecer assim, mas eu juro que não é tão ruim assim. Felizmente, a principal coisa que você precisa saber é simples. Confira o processo de patrocínio para obter todos os detalhes e algumas dicas, mas a parte mais importante é inscrever a ubuntu-sponsorsequipe no relatório de erros. Isso garante que ele apareça na fila de patrocínios e seja visto por um desenvolvedor honesto do Ubuntu.

Se você precisar conversar sobre algo em tempo real, o #ubuntu-develFreenode IRC fará o truque. Verifique o tópico do canal para o atual piloto de correção. Eles estão lá para ajudá-lo. Se não houver piloto em serviço, fique à vontade para pedir ajuda no canal, mas seja paciente.

Preparando tudo para ir

Para tornar o processo o mais rápido possível, há algumas coisas a fazer.

Atualize a descrição do bug para se parecer com:

[Impacto]

Aqui está uma explicação do impacto do bug nos usuários e uma justificativa para fazer o backport da correção para a versão estável

[Caso de teste]

  1. Degrau

  2. Por

  3. Degrau

  4. Instruções

  5. Verificar

  6. O conserto

[Potencial de regressão]

Aqui está uma discussão sobre qualquer potencial para regressões.

[Relatório original]

Tudo o que costumava estar na descrição é mantido abaixo.

Em seguida, prepare seus patches. As coisas serão muito mais rápidas se você fornecer debdiffs que cuidem de todos os bits da embalagem, em vez de um patch contra a fonte upstream. Isso inclui o uso do sistema de patches de pacotes, se ele usar um. Felizmente a add-patchpartir do ubuntu-dev-toolsInstale o ubuntu-dev-tools pode cuidar disso para você.

Vamos passar por isso. Primeiro, pegue a fonte e o patch no relatório de erros:

$ pull-lp-source compiz precise
$ wget https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/974242/+attachment/3141645/+files/fix-974242.patch 

Agora vamos adicionar o patch ao pacote de origem:

$ cd compiz-0.9.7.8/
$ add-patch ../fix-974242.patch

Isso adicionará o patch debian/patchese será executado, dchsolicitando que você adicione uma nova entrada em debian/changelogAjustar a entrada ao destino proposto e aumente o número da versão para que fique abaixo da próxima versão carregada no release de desenvolvimento. Igual a:

compiz (1:0.9.7.8-0ubuntu1.1) precise-proposed; urgency=low

  * debian/patches/fix-974242.patch: [DESCRIBE CHANGES HERE]

 -- Your Name <you@example.com>  Mon, 11 Jun 2012 17:37:59 -0400

O arquivo em debian/patches/fix-974242.patchtambém possui alguns cabeçalhos que você pode querer editar:

## Description: add some description
## Origin/Author: add some origin or author
## Bug: bug URL

Agora crie seu novo pacote de código-fonte:

$ debuild -S -us

E crie o debdiff:

$ cd ..
$ debdiff compiz_0.9.7.8-0ubuntu1.dsc compiz_0.9.7.8-0ubuntu1.1.dsc > sru-for-lp-974242.debdiff

Agora você pode anexar o debdiffarquivo resultante ao seu relatório de erro.


resposta excelente, coisas boas. Você pode notar que pelo menos até 12.04 / 12.10 o comando é pull-lp-source. Não tem nenhum mais cedo para ver se / quando foipull-launchpad-source
doug

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.