para começar a hackear o libreoffice · 1 libreoffice productivity suite para começar a hackear o...

27
1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Upload: donhu

Post on 09-Feb-2019

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

1LibreOffice Productivity Suite

Para começar a hackear o LibreOffice

FISL 2012, AtualizadoOlivier Hallot

Page 2: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

2Olivier Hallot LibreOffice Productivity Suite

O que veremos hoje

Vamos falar do desenvolvimento do LibreOfficeVamos falar do repositório GIT

Vamos falar sobre como baixar o fonteVamos gerar os dados de configuração da compilação

Chaves de compilação principaisVamos “tentar” compilar e resolver os problemas da compilação

EASY-HACKSVamos falar sobre fazer patches

Page 3: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

3Olivier Hallot LibreOffice Productivity Suite

Desenvolvimento do LibreOffice

Sobre o Fonte

30.000 arquivos

C, C++, Java, Perl, Python

Muita coisa velhaLIPOASPIRAÇÃO: /unusedcode.easy

Comentários em AlemãoConhece alemão?... que pena...

Preferência por desenvolver no LinuxDesenvolvedores RedHat, SUSE, Canonical, Lanedo, Tata

Devs individuais, EU!.... E VOCÊ!!!

Page 4: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

4Olivier Hallot LibreOffice Productivity Suite

Não se iluda: o Mundo é WINDOWS

2011-01-25 2011-02-25 2011-03-25 2011-04-25 2011-05-25 2011-06-25 2011-07-25 2011-08-25 2011-09-25 2011-10-250

10000

20000

30000

40000

50000

60000

70000

80000

90000

100000

Downloads by product

Win-x86-multi

Win-x86-all_lang

Portable

MacOS-x86

MacOS-PPC

Linux-x86-64

Linux-x86

DVD

>90% é Windows

Page 5: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

5Olivier Hallot LibreOffice Productivity Suite

Baixar o fonte do LibreOffice

Page 6: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

6Olivier Hallot LibreOffice Productivity Suite

Repositório GIT

$ mkdir git$ cd git$ git clone git://anongit.freedesktop.org/libreoffice/core liboCloning into libo...Remote: Counting objects: 76845, done.remote: Compressing objects: 100% (17328/17328), done.remote: Total 76845 (delta 60786), reused 74045 (delta 58579)Receiving objects: 100% (76845/76845), 15.82 MiB | 1.17 MiB/s, done.Resolving deltas: 100% (60786/60786), done.$ cd libo

./git pull -r

Page 7: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

7Olivier Hallot LibreOffice Productivity Suite

Autogen

Page 8: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

8Olivier Hallot LibreOffice Productivity Suite

Autogen.sh

O autogen.sh irá gerar

As variáveis de ambienteAs configurações para o make

Verificar as dependênciasNão permite prosseguir se as dependências não forem cumpridasIndica os pacotes de desenvolvimento necessários ao LibreOffice

DICA: autogen.lastrunDICA: sudo apt-get build-dep libreoffice

Page 9: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

9Olivier Hallot LibreOffice Productivity Suite

Autogen.sh

Parâmetros importantes--with-num-cpus--with-max-jobs--with-vendor = Darth Vader--with-lang=pt-BR en-US--disable-mozilla--enable-kde4

Autogen.sh --help

Page 10: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

10Olivier Hallot LibreOffice Productivity Suite

Make

Page 11: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

11Olivier Hallot LibreOffice Productivity Suite

Make

makeFaz tudo.... Compila e linkedita

make dev-installCria uma árvore de instalação na sua área, para testes.~/git/core/install/program/soffice

make cleanLimpa tudo e recomeça do zero!!!!!

Obs: baixe o make 3.82!!!!

8 horas / N.º de CPUs

Page 12: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Page 13: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

O que queremos?

Compilar mais rápidoMelhorar os MAKES, BuildsRemover código sem uso

Modernizar o códigoNovas classes de stringsNovas classes STLNovas tecnologias do C++ 11Novas tecnologias de compilação

Page 14: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

O que queremos?

Novas featuresNovas funções OpenFormulaAnimações do ImpressNova interface!!!

Melhorar a InteroperabilidadeMais filtros de importação (Corel, Visio, Publisher)Interoperabilidade com Microsoft (docx, xlsx, pptx)

Page 15: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Refatoração de Strings

String → OUString, OStringUniString → OUString

+ outras formas de Strings que existem no código...

Classes String e UniString em desuso!

Page 16: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Refatoração de Strings

Simplificação do namespace●rtl::OUString → OUString●rtl::OString → OString●Using rtl::OUString → (nada)●Using rtl::OString → (nada)

Page 17: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Refatoração de Strings

●OUString(RTL_CONSTASCII_USTRINGPARAM(“bla bla bla”)) → OUString(“bla bla bla”)

●OString(RTL_CONSTASCII_STRINGPARAM(“bla bla bla”)) → OString(“bla bla bla”)●Outras macros que embutem essas: C2U, A2U

Page 18: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Refatoração de Strings

OUString MeuString;...- MeuString = OUString(“bla bla bla”);+ MeuString = “bla bla bla”;

OString MeuString;...- MeuString = OString(“bla bla bla”);+ MeuString = “bla bla bla”;

Page 19: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Refatoração de Strings

Exceções: ●Return

●return “bla bla bla”; → return OUString(“bla bla bla”;

●return “bla bla bla”; → return OString(“bla bla bla”;

●Operador ternário “?”●MeuString = Cond ? “Sim” : “Não”;●MeuString = Cond ? OUString(“Sim”) : OUString(“Não);

Page 20: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Booleanos

Sal_Bool → boolSal_True → true

Sal_False → false

Page 21: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Unused code

Rotinas que não são chamadas nuncaPodem ser descartadas

unusedcode.easy na raizEliminar: *.cxx e *.hxx, e possivelmente outras

coisas tipo *.hrc e *.src

SwSortElements::Insert(SwSortElement* const&, unsigned short&)SwSortElements::Insert(SwSortElement* const*, unsigned short)SwSortElements::Insert(SwSortElements const*, unsigned short, unsigned short)SwSortElements::Remove(SwSortElement* const&, unsigned short)SwSortElements::Remove(unsigned short, unsigned short)

Page 22: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

Olivier Hallot

Unused code

Page 23: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

23Olivier Hallot LibreOffice Productivity Suite

Easy Hacks

Excelente para começar a desenvolver.Mentoring de alguns do nossos MEGADEVs

Alguns são super-fáceisLimpeza do código:

BUG 43058: remover duplo ;; no códigoBUG 42768: Acabar com o cachorro!

<wiki>/Development/Easy_HacksOrdenado por competência

<wiki>/Development/Easy_Hacks_by_required_SkillOrdenado por dificuldade

<wiki>/Development/Easy_Hacks_by_Difficulty

Page 24: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

24Olivier Hallot LibreOffice Productivity Suite

Patchando o código

Você fez um PATCH !!!!!Testou, testou, testou... e funciona!!!!Precisa agora submeter o Patch aos MEGADEVS

git add <meu arquivo modificado>

Abre um novo arquivo no vi para você descrever sua modificação

1 ª linha é título, 2ª é vazia, 3ª é descrição com detalhesgit commit

Insere o seu arquivo no git./logerrit submit

Submete seu commit para analise dos MEGADEVS

Page 25: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

25Olivier Hallot LibreOffice Productivity Suite

GERRIT

Gerrit é uma ferramenta para colaboração de patches

Você submete seu patch e ele fica visível para todosUm desenvolvedor irá revisar e aplicar seu patchhttp://gerrit.libreoffice.org

Sempre use o gerritSetup muito fácil: use seu OpenID (conta do Google, Yahoo, Twitter, etc...)Segurança com sua chave SSHInstruções:

http://wiki.documentfoundation.org/Development/gerrit/setup/pt-br

Page 26: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

26Olivier Hallot LibreOffice Productivity Suite

Mais dicas, importantes

Lista de discussão de devs no Brasil (em português)[email protected] começar e discutir em protuguês

Lista de discussão de dev do LibreOfficehttp://lists.freedesktop.org/mailman/listinfo/libreofficeEssa lista é onde os devs discutem tudo que for relacionado ao desenvolvimento do código, C++, Patches, etc...

IRC: irc.freenode.net, #libreoffice-devMegadevs on-line, para tirar dúvidas

http://docs.libreoffice.org/

Page 27: Para começar a hackear o LibreOffice · 1 LibreOffice Productivity Suite Para começar a hackear o LibreOffice FISL 2012, Atualizado Olivier Hallot

27LibreOffice Productivity Suite

All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.

Mão à obra!Obrigado!

… for supporting LibreOffice!