open build service
     Mauro Parra-Miranda
   mauro@masutostudios.com



                             1
¿Qué es?
•    Servicio público para ayudar a los
    desarrolladores a distribuir su software.
• Novell/SUSE proporciona una granja de
    compilación con todos los sistemas
    soportados configurados y listos.
• Genera paquetes para múltiples
    distribuciones, tales como openSUSE,
    Ubuntu, Mandrake, Fedora.


                                                2
¿Qué es?
• Soporta múltiples arquitecturas: ix86,
  ix86_64, PPC; en un futuro para ARM.
• Un solo RPM spec genera paquetes para
  todas las distribuciones que se desee,
  incluyendo ubuntu, que usa paquetes “.deb”.
• Genera automagicamente un canal de
  distribución de software. Algo como:
  http://software.opensuse.org/yourproject


                                                3
¿Qué es?
• Los usuarios pueden buscar la última versión
  del software que necesitan, via
  http://software.opensuse.org
• Acceso a compañias externas a dar soporte
  fácilmente a linux (proveer repositorios para
  cada proyecto de las compañias, con su
  respectivo repositorio e incluso sus propias
  dependencias).


                                                  4
¿Qué es?
• Permite el desarrollo en equipo.
• La granja compilara todos tus proyectos tan
  seguido como los cambies, pero si requieres
  hacer pruebas rápidas, puedes realizar la
  compilación (y el paquete) en tu propia
  estación, con un minimo de esfuerzo y un
  minimo de paquetes instalados
  (prácticamente, solo hay que instalar osc).


                                                5
¿Qué es?

• Obtener parches y aplicaciones para
  distribuciones con versiones viejas (o la
  habilidad de compilar alguna versión más
  reciente tu mismo, sin dolor).
• Más info en el video:
  http://en.opensuse.org/BSVideo



                                              6
Ventajas
• No necesidad de granjas de compilación o
  múltiples máquinas soportadas o
  configuraciones.
• Resolución de dependencias automatica, con
  su respectiva compilación si es necesario
  (por ejemplo, si alguna de las dependencias
  de paquete foo se actualizaran, el paquete
  foo se vuelve a compilar con la nueva
  dependencia).


                                                7
Ventajas
• Ligas a otros proyectos, por lo que puedes
  reutilizar los paquetes que haya hecho
  alguien más. Por ejemplo, ustedes generaron
  un parche para banshee, que quieren probar.
  No tienen que hacer el paquete de cero,
  sino que ligan al paquete banshee del
  proyecto, y encima de eso hacen
  modificaciones. Asi, siempre tendran las
  versiones más frescas.


                                                8
Ventajas
• Se puede compilar y distribuir para:
  SUSE
  Debian
  Redhat
  Mandriva Linux
  Ubuntu


• Con soporte para ix86, x86_64, PPC, ARM.
  Con posible soporte para z390x, ia64.


                                             9
RPM spec
• Comentarios - Ignorados por RPM.
• Tags - Definir datos.
• Scripts - Conjunto de comandos a ejecutar.
• Macros - Abreviación para múltiples
  comandos a ejecutar.
• %files - La lista de archivos en el RPM
• Directivas - modificadoras de archivos.
                                               10
RPM spec


• Condicionales - if’s a nivel de arquitectura o
  sistema operativo.




                                                   11
RPM spec


• Comentarios
  # This is the spec file for playmidi 2.3...




                                               12
RPM spec
• Tags
  <something>:<something-else>
  Vendor: Masuto Studios
  Name: Foo
  Version: 1.2
  Release: 6
  %description This software does something
  Summary: This software does something.
  Copyright: GPL


                                              13
RPM spec

• Tags
  URL: http://www.masutostudios.com
  Group: Applications/Editors
  Packager: Mauro Parra-Miranda
  <mauro@masutostudios.com>




                                      14
RPM spec
• Dependencias
  Provides: evolution
  Requires: glibc
  Conflicts: evolution-1
  AutoReqProv: no
  ExcludeArch: sparc alpha
  Prefix: /opt
  BuildRoot: /tmp/cdplayer



                             15
RPM spec

• Source: ftp://ftp.gnomovision.com/pub/
  cdplayer-1.0.tgz
  Source1: Fooobar.tar.gz
  Patch: foo.patch
  Patch1: bar.patch




                                           16
Tareas del RPM
• Desempacar los fuentes
• Aplicar parches
• Compilar el software
• Instalar el software
• Empaquetar
• Limpiar

                           17
Filosofia de RPM


• Comenzar con código fuente pristino.
• Aplicar parches sucesivos
• Compilar la versión parchada.


                                         18
Script %prep

• Corre antes que cualquier cosa, usualmente
  crea los directorios, desempaca el código
  fuente, aplica parches, aplica cualquier tipo
  de operaciones para poder generar el
  código fuente a compilar, como cualquier
  desarrolladfor haria.




                                                  19
Script %build

• Corre después de %prep, usualmente solo
  implica un:

  make

  o similar.




                                            20
Script %install
• Primero intenta correr un:
  make install

  uno después puede añadir cualquier otra
  cosa que se requiera, como un theme o
  branding, que en ocasiones no se requiere
  para compilar.



                                              21
Script %clean


• Limpiar el sitio de trabajo :-)
• rm -rf $RPM_BUILD_ROOT


                                    22
Otros scripts interesantes

• %pre - corre antes que se instale el RPM
• %post - corre despues que se instale el RPM
  (normalmente para correr ldconfig).
• %preun - igual que %pre, pero se corre antes
  de desinstalar el RPM
• %postun - igual que %post, pero se corre
  despues de desinstalar el RPM


                                                 23
Scripts comunes


• %setup - desempaqueta los fuentes, revisa
  permisos, se puede indicar el orden en el
  cual se desempaquetan los fuentes.
• %patch - permite aplicar uno o tal parche en
  los fuentes.




                                                 24
%files
• Indica que archivos deben ser incluidos,
  incluye manuales, graficas, etc.
• Puede uno usar %doc para indicar que es
  documento, %config es para indicar que es
  un archivo de configuracion que se debe
  guardar aun despues de borrado el paquete.
• %attr (mode, user, group) file, como:
  (755,root,root)


                                               25
%files


• %dir - indica que algo es un directorio.



                                             26
Subpaquetes
• %package hace posible hacer mas de un
  paquete con un mismo SPEC; muchos lo
  usan para hacer subpaquetes, como los que
  contienen la documentación y similar.

  %package -n doc

  Lo cual hace un subpaquete foo-doc



                                              27
Prozilla




           28
Prozilla




           29
Prozilla




           30
Prozilla




           31
Prozilla




           32
obs - web




            33
obs - web




            34
obs - web




            35
obs - web




            36
obs - web




            37
Links
• http://build.opensuse.org
• http://en.opensuse.org/Build_Service
• Build Service Book -
  https://build.opensuse.org/documentation/obs/index.html

• osc (cli) - http://en.opensuse.org/Build_Service/CLI
• Max RPM - http://www.rpm.org/max-rpm
• http://masutostudios.com/ciencias09/obs.pdf
                                                            38
Masuto Studios
http://www.masutostudios.com




                               39

Open Build Service

  • 1.
    open build service Mauro Parra-Miranda mauro@masutostudios.com 1
  • 2.
    ¿Qué es? • Servicio público para ayudar a los desarrolladores a distribuir su software. • Novell/SUSE proporciona una granja de compilación con todos los sistemas soportados configurados y listos. • Genera paquetes para múltiples distribuciones, tales como openSUSE, Ubuntu, Mandrake, Fedora. 2
  • 3.
    ¿Qué es? • Soportamúltiples arquitecturas: ix86, ix86_64, PPC; en un futuro para ARM. • Un solo RPM spec genera paquetes para todas las distribuciones que se desee, incluyendo ubuntu, que usa paquetes “.deb”. • Genera automagicamente un canal de distribución de software. Algo como: http://software.opensuse.org/yourproject 3
  • 4.
    ¿Qué es? • Losusuarios pueden buscar la última versión del software que necesitan, via http://software.opensuse.org • Acceso a compañias externas a dar soporte fácilmente a linux (proveer repositorios para cada proyecto de las compañias, con su respectivo repositorio e incluso sus propias dependencias). 4
  • 5.
    ¿Qué es? • Permiteel desarrollo en equipo. • La granja compilara todos tus proyectos tan seguido como los cambies, pero si requieres hacer pruebas rápidas, puedes realizar la compilación (y el paquete) en tu propia estación, con un minimo de esfuerzo y un minimo de paquetes instalados (prácticamente, solo hay que instalar osc). 5
  • 6.
    ¿Qué es? • Obtenerparches y aplicaciones para distribuciones con versiones viejas (o la habilidad de compilar alguna versión más reciente tu mismo, sin dolor). • Más info en el video: http://en.opensuse.org/BSVideo 6
  • 7.
    Ventajas • No necesidadde granjas de compilación o múltiples máquinas soportadas o configuraciones. • Resolución de dependencias automatica, con su respectiva compilación si es necesario (por ejemplo, si alguna de las dependencias de paquete foo se actualizaran, el paquete foo se vuelve a compilar con la nueva dependencia). 7
  • 8.
    Ventajas • Ligas aotros proyectos, por lo que puedes reutilizar los paquetes que haya hecho alguien más. Por ejemplo, ustedes generaron un parche para banshee, que quieren probar. No tienen que hacer el paquete de cero, sino que ligan al paquete banshee del proyecto, y encima de eso hacen modificaciones. Asi, siempre tendran las versiones más frescas. 8
  • 9.
    Ventajas • Se puedecompilar y distribuir para: SUSE Debian Redhat Mandriva Linux Ubuntu • Con soporte para ix86, x86_64, PPC, ARM. Con posible soporte para z390x, ia64. 9
  • 10.
    RPM spec • Comentarios- Ignorados por RPM. • Tags - Definir datos. • Scripts - Conjunto de comandos a ejecutar. • Macros - Abreviación para múltiples comandos a ejecutar. • %files - La lista de archivos en el RPM • Directivas - modificadoras de archivos. 10
  • 11.
    RPM spec • Condicionales- if’s a nivel de arquitectura o sistema operativo. 11
  • 12.
    RPM spec • Comentarios # This is the spec file for playmidi 2.3... 12
  • 13.
    RPM spec • Tags <something>:<something-else> Vendor: Masuto Studios Name: Foo Version: 1.2 Release: 6 %description This software does something Summary: This software does something. Copyright: GPL 13
  • 14.
    RPM spec • Tags URL: http://www.masutostudios.com Group: Applications/Editors Packager: Mauro Parra-Miranda <mauro@masutostudios.com> 14
  • 15.
    RPM spec • Dependencias Provides: evolution Requires: glibc Conflicts: evolution-1 AutoReqProv: no ExcludeArch: sparc alpha Prefix: /opt BuildRoot: /tmp/cdplayer 15
  • 16.
    RPM spec • Source:ftp://ftp.gnomovision.com/pub/ cdplayer-1.0.tgz Source1: Fooobar.tar.gz Patch: foo.patch Patch1: bar.patch 16
  • 17.
    Tareas del RPM •Desempacar los fuentes • Aplicar parches • Compilar el software • Instalar el software • Empaquetar • Limpiar 17
  • 18.
    Filosofia de RPM •Comenzar con código fuente pristino. • Aplicar parches sucesivos • Compilar la versión parchada. 18
  • 19.
    Script %prep • Correantes que cualquier cosa, usualmente crea los directorios, desempaca el código fuente, aplica parches, aplica cualquier tipo de operaciones para poder generar el código fuente a compilar, como cualquier desarrolladfor haria. 19
  • 20.
    Script %build • Corredespués de %prep, usualmente solo implica un: make o similar. 20
  • 21.
    Script %install • Primerointenta correr un: make install uno después puede añadir cualquier otra cosa que se requiera, como un theme o branding, que en ocasiones no se requiere para compilar. 21
  • 22.
    Script %clean • Limpiarel sitio de trabajo :-) • rm -rf $RPM_BUILD_ROOT 22
  • 23.
    Otros scripts interesantes •%pre - corre antes que se instale el RPM • %post - corre despues que se instale el RPM (normalmente para correr ldconfig). • %preun - igual que %pre, pero se corre antes de desinstalar el RPM • %postun - igual que %post, pero se corre despues de desinstalar el RPM 23
  • 24.
    Scripts comunes • %setup- desempaqueta los fuentes, revisa permisos, se puede indicar el orden en el cual se desempaquetan los fuentes. • %patch - permite aplicar uno o tal parche en los fuentes. 24
  • 25.
    %files • Indica quearchivos deben ser incluidos, incluye manuales, graficas, etc. • Puede uno usar %doc para indicar que es documento, %config es para indicar que es un archivo de configuracion que se debe guardar aun despues de borrado el paquete. • %attr (mode, user, group) file, como: (755,root,root) 25
  • 26.
    %files • %dir -indica que algo es un directorio. 26
  • 27.
    Subpaquetes • %package haceposible hacer mas de un paquete con un mismo SPEC; muchos lo usan para hacer subpaquetes, como los que contienen la documentación y similar. %package -n doc Lo cual hace un subpaquete foo-doc 27
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
    Links • http://build.opensuse.org • http://en.opensuse.org/Build_Service •Build Service Book - https://build.opensuse.org/documentation/obs/index.html • osc (cli) - http://en.opensuse.org/Build_Service/CLI • Max RPM - http://www.rpm.org/max-rpm • http://masutostudios.com/ciencias09/obs.pdf 38
  • 39.